From e8b83aa96e0bdf4ca453f100d92aee2c8e043392 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Wed, 4 Apr 2012 13:37:05 +0100 Subject: [PATCH 01/17] fail if numeric args to vips are malformed --- libvips/iofuncs/error.c | 6 +++++ libvips/iofuncs/object.c | 45 ++++++++++++++++++++++++++++++++----- libvips/iofuncs/operation.c | 5 ++++- tools/vips.c | 2 +- 4 files changed, 51 insertions(+), 7 deletions(-) diff --git a/libvips/iofuncs/error.c b/libvips/iofuncs/error.c index 61fb7013..ceb1854e 100644 --- a/libvips/iofuncs/error.c +++ b/libvips/iofuncs/error.c @@ -262,6 +262,12 @@ vips_error_g( GError **error ) if( !vips_domain ) vips_domain = g_quark_from_string( "libvips" ); + /* glib does not expect a trailing '\n' and vips always has one. + */ + g_mutex_lock( vips__global_lock ); + vips_buf_removec( &vips_error_buf, '\n' ); + g_mutex_unlock( vips__global_lock ); + g_set_error( error, vips_domain, -1, "%s", vips_error_buffer() ); vips_error_clear(); } diff --git a/libvips/iofuncs/object.c b/libvips/iofuncs/object.c index 69665d6b..c161b87c 100644 --- a/libvips/iofuncs/object.c +++ b/libvips/iofuncs/object.c @@ -1477,26 +1477,53 @@ vips_object_set_argument_from_string( VipsObject *object, else if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { gboolean b; - g_value_init( &gvalue, G_TYPE_BOOLEAN ); b = TRUE; if( value && (strcasecmp( value, "false" ) == 0 || strcasecmp( value, "no" ) == 0 || strcmp( value, "0" ) == 0) ) b = FALSE; + + g_value_init( &gvalue, G_TYPE_BOOLEAN ); g_value_set_boolean( &gvalue, b ); } else if( G_IS_PARAM_SPEC_INT( pspec ) ) { + int i; + + if( sscanf( value, "%d", &i ) != 1 ) { + vips_error( class->nickname, + _( "'%s' is not an integer" ), value ); + return( -1 ); + } + g_value_init( &gvalue, G_TYPE_INT ); - g_value_set_int( &gvalue, atoi( value ) ); + g_value_set_int( &gvalue, i ); } else if( G_IS_PARAM_SPEC_UINT64( pspec ) ) { + /* Not allways the same as guint64 :-( argh. + */ + long long l; + + if( sscanf( value, "%Ld", &l ) != 1 ) { + vips_error( class->nickname, + _( "'%s' is not an integer" ), value ); + return( -1 ); + } + g_value_init( &gvalue, G_TYPE_UINT64 ); - g_value_set_uint64( &gvalue, atoll( value ) ); + g_value_set_uint64( &gvalue, l ); } else if( G_IS_PARAM_SPEC_DOUBLE( pspec ) ) { + double d; + + if( sscanf( value, "%lg", &d ) != 1 ) { + vips_error( class->nickname, + _( "'%s' is not a double" ), value ); + return( -1 ); + } + g_value_init( &gvalue, G_TYPE_DOUBLE ); - g_value_set_double( &gvalue, atof( value ) ); + g_value_set_double( &gvalue, d ); } else if( G_IS_PARAM_SPEC_ENUM( pspec ) ) { GEnumValue *enum_value; @@ -1518,8 +1545,16 @@ vips_object_set_argument_from_string( VipsObject *object, else if( G_IS_PARAM_SPEC_FLAGS( pspec ) ) { /* Hard to set from a symbolic name. Just take an int. */ + int i; + + if( sscanf( value, "%d", &i ) != 1 ) { + vips_error( class->nickname, + _( "'%s' is not an integer" ), value ); + return( -1 ); + } + g_value_init( &gvalue, otype ); - g_value_set_flags( &gvalue, atoi( value ) ); + g_value_set_flags( &gvalue, i ); } else { g_value_init( &gvalue, G_TYPE_STRING ); diff --git a/libvips/iofuncs/operation.c b/libvips/iofuncs/operation.c index df7b757b..3422f7bb 100644 --- a/libvips/iofuncs/operation.c +++ b/libvips/iofuncs/operation.c @@ -697,6 +697,7 @@ vips_call_options_set( const gchar *option_name, const gchar *value, vips_call_find_pspec, (void *) name, NULL )) ) { vips_error( VIPS_OBJECT_GET_CLASS( operation )->nickname, _( "unknown argument '%s'" ), name ); + vips_error_g( error ); return( FALSE ); } argument_class = argument_instance->argument_class; @@ -705,8 +706,10 @@ vips_call_options_set( const gchar *option_name, const gchar *value, if( (argument_class->flags & VIPS_ARGUMENT_INPUT) ) { if( vips_object_set_argument_from_string( VIPS_OBJECT( operation ), - g_param_spec_get_name( pspec ), value ) ) + g_param_spec_get_name( pspec ), value ) ) { + vips_error_g( error ); return( FALSE ); + } #ifdef VIPS_DEBUG { diff --git a/tools/vips.c b/tools/vips.c index c0074a1c..63be2fa2 100644 --- a/tools/vips.c +++ b/tools/vips.c @@ -942,7 +942,7 @@ parse_options( GOptionContext *context, int *argc, char **argv ) g_error_free( error ); } - error_exit( "%s", g_get_prgname() ); + error_exit( NULL ); } /* We support --plugin and --version for all cases. From 0231cdf134c438168a53c4b7824cc9d26e69388f Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Wed, 4 Apr 2012 17:18:32 +0100 Subject: [PATCH 02/17] Revert "add ARGB coding" This reverts commit 78b5ad5883a72cb69278a1578133bc8def5458e4. Conflicts: libvips/colour/im_rad2float.c --- ChangeLog | 2 -- TODO | 24 +++++++++--------------- libvips/colour/colour.c | 13 ------------- libvips/colour/im_argb2rgba.c | 10 ++++++++-- libvips/colour/im_rad2float.c | 2 +- libvips/deprecated/vips7compat.c | 1 - libvips/foreign/foreign.c | 27 +++++++-------------------- libvips/foreign/openslide2vips.c | 2 +- libvips/foreign/openslideload.c | 2 -- libvips/include/vips/colour.h | 2 -- libvips/include/vips/error.h | 1 - libvips/include/vips/image.h | 6 ++---- libvips/iofuncs/enumtypes.c | 1 - libvips/iofuncs/error.c | 29 +---------------------------- libvips/iofuncs/image.c | 3 +-- libvips/iofuncs/vips.c | 1 - 16 files changed, 30 insertions(+), 96 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9b6ddedc..556cd4fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,8 +4,6 @@ - nearest-neighbor interpolation rounds coordinates to nearest instead of rounding down (thanks Nicolas) - add dzsave, save in deep zoom format -- add VIPS_CODING_ARGB -- openslideload output tagged as ARGB 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken diff --git a/TODO b/TODO index 06e83442..79013bd3 100644 --- a/TODO +++ b/TODO @@ -1,15 +1,3 @@ -- can we do CMC(2:1) by warping UCS space? - -- add a simple wrapping of im_affinei_all() to the po db, perhaps the name of - the interpolator as a string? - -- dzsave should maybe write some xml as well, see the Python dz writer? - -- the operation cache needs to detect invalidate - - - - blocking bugs ============= @@ -52,10 +40,18 @@ foreign ppm.c radiance.c -- should there be some way to set the seq cache size? +- is the tif reader deadlocking sometimes? + + is it when we get a non-seq error? + + should there be some way to set the seq cache size? - foreign docs come up as "VipsForeignSave", annoying, why? +- make an argb coding type, add to nip2 and known coding + + see openslide + - add nifti support http://niftilib.sourceforge.net/ @@ -88,8 +84,6 @@ packaging - do we bundle "convert" in the OS X / win32 builds? if we don't we should -- goffice on OS X seems to be broken? - convolution =========== diff --git a/libvips/colour/colour.c b/libvips/colour/colour.c index 9234b53a..660ec06c 100644 --- a/libvips/colour/colour.c +++ b/libvips/colour/colour.c @@ -791,19 +791,6 @@ vips_rad2float( VipsImage *in, VipsImage **out, ... ) return( result ); } -int -vips_argb2rgba( VipsImage *in, VipsImage **out, ... ) -{ - va_list ap; - int result; - - va_start( ap, out ); - result = vips_call_split( "im_argb2rgba", ap, in, out ); - va_end( ap ); - - return( result ); -} - int vips_float2rad( VipsImage *in, VipsImage **out, ... ) { diff --git a/libvips/colour/im_argb2rgba.c b/libvips/colour/im_argb2rgba.c index 0009e2fc..90c3eac3 100644 --- a/libvips/colour/im_argb2rgba.c +++ b/libvips/colour/im_argb2rgba.c @@ -88,8 +88,14 @@ im_argb2rgba( VipsImage *in, IMAGE *out ) { guint32 bg; - if( vips_check_coding_argb( "argb2rgba", in ) || - im_cp_desc( out, in ) ) + /* check for RAD coding + if( in->Coding != IM_CODING_RAD ) { + im_error( "im_rad2float", "%s", _( "not a RAD image" ) ); + return( -1 ); + } + */ + + if( im_cp_desc( out, in ) ) return( -1 ); out->Coding = IM_CODING_NONE; diff --git a/libvips/colour/im_rad2float.c b/libvips/colour/im_rad2float.c index 89467332..8adc8065 100644 --- a/libvips/colour/im_rad2float.c +++ b/libvips/colour/im_rad2float.c @@ -185,7 +185,7 @@ im_rad2float( IMAGE *in, IMAGE *out ) return( -1 ); out->Bands = 3; out->BandFmt = IM_BANDFMT_FLOAT; - out->Coding = VIPS_CODING_NONE; + out->Coding = IM_CODING_NONE; if( im_wrapone( in, out, (im_wrapone_fn) rad2float, NULL, NULL ) ) diff --git a/libvips/deprecated/vips7compat.c b/libvips/deprecated/vips7compat.c index 32976458..b2fd04c4 100644 --- a/libvips/deprecated/vips7compat.c +++ b/libvips/deprecated/vips7compat.c @@ -293,7 +293,6 @@ static const char *im_Coding[] = { "RGB_COMPRESSED", "LUM_COMPRESSED", "IM_CODING_RAD", - "VIPS_CODING_ARGB", NULL }; diff --git a/libvips/foreign/foreign.c b/libvips/foreign/foreign.c index 37d308f9..ef64b34a 100644 --- a/libvips/foreign/foreign.c +++ b/libvips/foreign/foreign.c @@ -1138,20 +1138,6 @@ vips_foreign_convert_saveable( VipsForeignSave *save ) in = out; } - /* If this is a ARGB, we go to png-style RGBA. - */ - if( in->Coding == VIPS_CODING_ARGB ) { - VipsImage *out; - - if( vips_argb2rgba( in, &out, NULL ) ) { - g_object_unref( in ); - return( -1 ); - } - g_object_unref( in ); - - in = out; - } - /* Get the bands right. */ if( in->Coding == VIPS_CODING_NONE ) { @@ -2068,7 +2054,7 @@ vips_openexrload( const char *filename, VipsImage **out, ... ) * * Optional arguments: * - * @level: load this level of the pyramid + * @layer: load this layer * @associated: load this associated image * * Read a virtual slide supported by the OpenSlide library into a VIPS image. @@ -2076,9 +2062,10 @@ vips_openexrload( const char *filename, VipsImage **out, ... ) * and Trestle formats. * * To facilitate zooming, virtual slide formats include multiple scaled-down - * versions of the high-resolution image. + * versions of the high-resolution image. These are typically called + * "levels", though OpenSlide and im_openslide2vips() call them "layers". * By default, vips_openslideload() reads the highest-resolution layer - * (level 0). Set @level to the level number you want. + * (layer 0). Set @layer to the layer number you want. * * In addition to the slide image itself, virtual slide formats sometimes * include additional images, such as a scan of the slide's barcode. @@ -2087,10 +2074,10 @@ vips_openexrload( const char *filename, VipsImage **out, ... ) * A slide's associated images are listed in the * "slide-associated-images" metadata item. * - * The output of this operator is in Cairo-style pre-multipled ARGB format. - * Use vips_argb2rgba() to decode to png-style RGBA. + * The output of this operator is in pre-multipled ARGB format. Use + * im_argb2rgba() to decode to png-style RGBA. * - * See also: vips_argb2rgba(), vips_image_new_from_file(). + * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ diff --git a/libvips/foreign/openslide2vips.c b/libvips/foreign/openslide2vips.c index 23f58725..0d257336 100644 --- a/libvips/foreign/openslide2vips.c +++ b/libvips/foreign/openslide2vips.c @@ -211,7 +211,7 @@ readslide_new( const char *filename, VipsImage *out, } vips_image_init_fields( out, w, h, 4, VIPS_FORMAT_UCHAR, - VIPS_CODING_ARGB, VIPS_INTERPRETATION_RGB, 1.0, 1.0 ); + VIPS_CODING_NONE, VIPS_INTERPRETATION_RGB, 1.0, 1.0 ); for( properties = openslide_get_property_names( rslide->osr ); *properties != NULL; properties++ ) diff --git a/libvips/foreign/openslideload.c b/libvips/foreign/openslideload.c index 3c2a3c69..23abd2f1 100644 --- a/libvips/foreign/openslideload.c +++ b/libvips/foreign/openslideload.c @@ -4,8 +4,6 @@ * - from openslideload.c * 28/2/12 * - convert "layer" to "level" where externally visible - * 2/4/12 - * - output images coded as ARGB */ /* diff --git a/libvips/include/vips/colour.h b/libvips/include/vips/colour.h index 3a33e1ab..6f6ea93d 100644 --- a/libvips/include/vips/colour.h +++ b/libvips/include/vips/colour.h @@ -51,8 +51,6 @@ int vips_rad2float( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_float2rad( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); -int vips_argb2rgba( VipsImage *in, VipsImage **out, ... ) - __attribute__((sentinel)); int vips_LabS2LabQ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LabQ2Lab( VipsImage *in, VipsImage **out, ... ) diff --git a/libvips/include/vips/error.h b/libvips/include/vips/error.h index 086f4e43..2681efae 100644 --- a/libvips/include/vips/error.h +++ b/libvips/include/vips/error.h @@ -59,7 +59,6 @@ int vips_check_uncoded( const char *domain, VipsImage *im ); int vips_check_coding_known( const char *domain, VipsImage *im ); int vips_check_coding_labq( const char *domain, VipsImage *im ); int vips_check_coding_rad( const char *domain, VipsImage *im ); -int vips_check_coding_argb( const char *domain, VipsImage *im ); int vips_check_coding_noneorlabq( const char *domain, VipsImage *im ); int vips_check_coding_same( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_mono( const char *domain, VipsImage *im ); diff --git a/libvips/include/vips/image.h b/libvips/include/vips/image.h index 81aa9a3b..cd5e1d44 100644 --- a/libvips/include/vips/image.h +++ b/libvips/include/vips/image.h @@ -198,12 +198,11 @@ typedef enum { * @VIPS_CODING_NONE: pixels are not coded * @VIPS_CODING_LABQ: pixels encode 3 float CIELAB values as 4 uchar * @VIPS_CODING_RAD: pixels encode 3 float RGB as 4 uchar (Radiance coding) - * @VIPS_CODING_ARGB: Cairo-style pre-multiplied ARGB * * How pixels are coded. * * Normally, pixels are uncoded and can be manipulated as you would expect. - * However some file formats code pixels for storage, and sometimes it's + * However some file formats code pixels for compression, and sometimes it's * useful to be able to manipulate images in the coded format. * * The gaps in the numbering are historical and must be maintained. Allocate @@ -214,8 +213,7 @@ typedef enum { VIPS_CODING_NONE = 0, VIPS_CODING_LABQ = 2, VIPS_CODING_RAD = 6, - VIPS_CODING_ARGB = 7, - VIPS_CODING_LAST = 8 + VIPS_CODING_LAST = 7 } VipsCoding; /* Struct we keep a record of execution time in. Passed to eval signal so diff --git a/libvips/iofuncs/enumtypes.c b/libvips/iofuncs/enumtypes.c index 66fb9b88..c8eb8554 100644 --- a/libvips/iofuncs/enumtypes.c +++ b/libvips/iofuncs/enumtypes.c @@ -483,7 +483,6 @@ vips_coding_get_type( void ) {VIPS_CODING_NONE, "VIPS_CODING_NONE", "none"}, {VIPS_CODING_LABQ, "VIPS_CODING_LABQ", "labq"}, {VIPS_CODING_RAD, "VIPS_CODING_RAD", "rad"}, - {VIPS_CODING_ARGB, "VIPS_CODING_ARGB", "argb"}, {VIPS_CODING_LAST, "VIPS_CODING_LAST", "last"}, {0, NULL, NULL} }; diff --git a/libvips/iofuncs/error.c b/libvips/iofuncs/error.c index ceb1854e..e790ecd2 100644 --- a/libvips/iofuncs/error.c +++ b/libvips/iofuncs/error.c @@ -496,8 +496,7 @@ vips_check_coding_known( const char *domain, VipsImage *im ) */ if( im->Coding != VIPS_CODING_NONE && im->Coding != VIPS_CODING_LABQ && - im->Coding != VIPS_CODING_RAD && - im->Coding != VIPS_CODING_ARGB ) { + im->Coding != VIPS_CODING_RAD ) { vips_error( domain, "%s", _( "unknown image coding" ) ); return( -1 ); } @@ -531,32 +530,6 @@ vips_check_coding_rad( const char *domain, VipsImage *im ) return( 0 ); } -/** - * vips_check_coding_argb: - * @domain: the originating domain for the error message - * @im: image to check - * - * Check that the image is in ARGB coding. - * If not, set an error message - * and return non-zero. - * - * See also: vips_error(). - * - * Returns: 0 on OK, or -1 on error. - */ -int -vips_check_coding_argb( const char *domain, VipsImage *im ) -{ - if( im->Coding != VIPS_CODING_ARGB || - im->BandFmt != VIPS_FORMAT_UCHAR || - im->Bands != 4 ) { - vips_error( domain, "%s", _( "ARGB coding only" ) ); - return( -1 ); - } - - return( 0 ); -} - /** * vips_check_coding_labq: * @domain: the originating domain for the error message diff --git a/libvips/iofuncs/image.c b/libvips/iofuncs/image.c index 52332a37..0f40aa79 100644 --- a/libvips/iofuncs/image.c +++ b/libvips/iofuncs/image.c @@ -456,8 +456,7 @@ vips_image_sanity( VipsObject *object, VipsBuf *buf ) (image->Coding != -1 && image->Coding != VIPS_CODING_NONE && image->Coding != VIPS_CODING_LABQ && - image->Coding != VIPS_CODING_RAD && - image->Coding != VIPS_CODING_ARGB) || + image->Coding != VIPS_CODING_RAD) || image->Type > VIPS_INTERPRETATION_ARRAY || image->dtype > VIPS_IMAGE_PARTIAL || image->dhint > VIPS_DEMAND_STYLE_ANY ) diff --git a/libvips/iofuncs/vips.c b/libvips/iofuncs/vips.c index 22596e10..8c65478b 100644 --- a/libvips/iofuncs/vips.c +++ b/libvips/iofuncs/vips.c @@ -188,7 +188,6 @@ image_pixel_length( VipsImage *image ) switch( image->Coding ) { case VIPS_CODING_LABQ: case VIPS_CODING_RAD: - case VIPS_CODING_ARGB: case VIPS_CODING_NONE: psize = VIPS_IMAGE_SIZEOF_IMAGE( image ); break; From 8345cbf1e9b3d92d59b8af00b5c447d6ee57fbf5 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Wed, 4 Apr 2012 17:18:48 +0100 Subject: [PATCH 03/17] Revert "vips7 compat for argb coding" This reverts commit a8969680ef44e7093564a394e528c220111b34f4. --- libvips/colour/im_rad2float.c | 2 +- libvips/include/vips/vips7compat.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/libvips/colour/im_rad2float.c b/libvips/colour/im_rad2float.c index 8adc8065..f63be113 100644 --- a/libvips/colour/im_rad2float.c +++ b/libvips/colour/im_rad2float.c @@ -180,7 +180,7 @@ rad2float( COLR *inp, COLOR *outbuf, int n ) int im_rad2float( IMAGE *in, IMAGE *out ) { - if( vips_check_coding_rad( "rad2float", in ) || + if( vips_check_coding_rad( "argb2rgba", in ) || im_cp_desc( out, in ) ) return( -1 ); out->Bands = 3; diff --git a/libvips/include/vips/vips7compat.h b/libvips/include/vips/vips7compat.h index facf011b..a661710e 100644 --- a/libvips/include/vips/vips7compat.h +++ b/libvips/include/vips/vips7compat.h @@ -64,7 +64,6 @@ extern "C" { #define IM_CODING_NONE VIPS_CODING_NONE #define IM_CODING_LABQ VIPS_CODING_LABQ #define IM_CODING_RAD VIPS_CODING_RAD -#define IM_CODING_ARGB VIPS_CODING_ARGB #define IM_TYPE_MULTIBAND VIPS_INTERPRETATION_MULTIBAND #define IM_TYPE_B_W VIPS_INTERPRETATION_B_W From d338d0fae6a3b8c02a0167b4172687f2b34ae70f Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Fri, 6 Apr 2012 12:09:53 +0100 Subject: [PATCH 04/17] fix vips_divide() for int args --- ChangeLog | 3 +++ configure.in | 6 +++--- libvips/arithmetic/divide.c | 23 +++++++++++++---------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4b99f575..9412c4e3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +6/4/12 started 7.28.3 +- vips_divide() failed for int arguments + 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken diff --git a/configure.in b/configure.in index 2655288a..ee2def22 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ # also update the version number in the m4 macros below -AC_INIT(vips, 7.28.2, vipsip@jiscmail.ac.uk) +AC_INIT(vips, 7.28.3, vipsip@jiscmail.ac.uk) # required for gobject-introspection AC_PREREQ(2.62) @@ -15,7 +15,7 @@ AC_CONFIG_MACRO_DIR([m4]) # user-visible library versioning m4_define([vips_major_version], [7]) m4_define([vips_minor_version], [28]) -m4_define([vips_micro_version], [2]) +m4_define([vips_micro_version], [3]) m4_define([vips_version], [vips_major_version.vips_minor_version.vips_micro_version]) @@ -35,7 +35,7 @@ VIPS_VERSION_STRING=$VIPS_VERSION-`date` # interface changes not backwards compatible?: reset age to 0 LIBRARY_CURRENT=31 -LIBRARY_REVISION=2 +LIBRARY_REVISION=3 LIBRARY_AGE=16 # patched into include/vips/version.h diff --git a/libvips/arithmetic/divide.c b/libvips/arithmetic/divide.c index ea3ddc07..baee9732 100644 --- a/libvips/arithmetic/divide.c +++ b/libvips/arithmetic/divide.c @@ -30,6 +30,9 @@ * - rewrite as a class * 22/2/12 * - avoid /0 for complex as well + * 6/4/12 + * - fixed switch cases + * - fixed int operands with <1 result */ /* @@ -150,7 +153,7 @@ G_DEFINE_TYPE( VipsDivide, vips_divide, VIPS_TYPE_BINARY ); #endif /* USE_MODARG_DIV */ -/* Real divide. +/* Real divide. Cast in to OUT before divide so we work for float output. */ #define RLOOP( IN, OUT ) { \ IN *left = (IN *) in[0]; \ @@ -158,10 +161,10 @@ G_DEFINE_TYPE( VipsDivide, vips_divide, VIPS_TYPE_BINARY ); OUT *q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ - if( right[x] == 0.0 ) \ + if( right[x] == 0 ) \ q[x] = 0; \ else \ - q[x] = left[x] / right[x]; \ + q[x] = (OUT) left[x] / (OUT) right[x]; \ } static void @@ -177,12 +180,12 @@ vips_divide_buffer( VipsArithmetic *arithmetic, * below. */ switch( vips_image_get_format( im ) ) { - case VIPS_FORMAT_CHAR: RLOOP( signed char, signed short ); break; - case VIPS_FORMAT_UCHAR: RLOOP( unsigned char, signed short ); break; - case VIPS_FORMAT_SHORT: RLOOP( signed short, signed int ); break; - case VIPS_FORMAT_USHORT:RLOOP( unsigned short, signed int ); break; - case VIPS_FORMAT_INT: RLOOP( signed int, signed int ); break; - case VIPS_FORMAT_UINT: RLOOP( unsigned int, signed int ); break; + case VIPS_FORMAT_CHAR: RLOOP( signed char, float ); break; + case VIPS_FORMAT_UCHAR: RLOOP( unsigned char, float ); break; + case VIPS_FORMAT_SHORT: RLOOP( signed short, float ); break; + case VIPS_FORMAT_USHORT: RLOOP( unsigned short, float ); break; + case VIPS_FORMAT_INT: RLOOP( signed int, float ); break; + case VIPS_FORMAT_UINT: RLOOP( unsigned int, float ); break; case VIPS_FORMAT_FLOAT: RLOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: RLOOP( double, double ); break; @@ -235,7 +238,7 @@ vips_divide_init( VipsDivide *divide ) } /** - * vips_divide:: + * vips_divide: * @in1: input image 1 * @in2: input image 2 * @out: output image From 63be2e1a080718731f9333548759f3890d6da6c9 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sun, 8 Apr 2012 10:13:10 +0100 Subject: [PATCH 05/17] fix warning for unused vips7 gvalue arg this fixes this warning: $ vips im_copy_set_meta GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)' failed --- ChangeLog | 1 + libvips/deprecated/dispatch_types.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9412c4e3..86d32188 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 6/4/12 started 7.28.3 - vips_divide() failed for int arguments +- fix warning for unused vips7 gvalue argument 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken diff --git a/libvips/deprecated/dispatch_types.c b/libvips/deprecated/dispatch_types.c index d354dca5..72147afe 100644 --- a/libvips/deprecated/dispatch_types.c +++ b/libvips/deprecated/dispatch_types.c @@ -817,7 +817,11 @@ gvalue_free( im_object obj ) { GValue *value = obj; - g_value_unset( value ); + /* If it's just zeros (built but not used) we'll get an error if we + * unset(). + */ + if( G_IS_VALUE( value ) ) + g_value_unset( value ); return( 0 ); } From 57cf9011e71b426f1e1e18d2ec562710bacc11c2 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Mon, 9 Apr 2012 18:03:17 +0100 Subject: [PATCH 06/17] fix openslide read previously it returned Cairo-style pre-multiplied argb, now it always unpacks to png-style rgba for you there was no real use for the coded form and it was annoying to have to call im_argb2rgba() explicitly --- ChangeLog | 2 + libvips/colour/Makefile.am | 1 - libvips/colour/colour_dispatch.c | 20 ----- libvips/colour/im_argb2rgba.c | 110 ----------------------- libvips/deprecated/deprecated_dispatch.c | 20 +++++ libvips/deprecated/vips7compat.c | 8 ++ libvips/foreign/openslide2vips.c | 98 ++++++++++++-------- libvips/include/vips/colour.h | 1 - libvips/include/vips/header.h | 8 -- libvips/include/vips/vips7compat.h | 1 + 10 files changed, 91 insertions(+), 178 deletions(-) delete mode 100644 libvips/colour/im_argb2rgba.c diff --git a/ChangeLog b/ChangeLog index 86d32188..f0cb18ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ 6/4/12 started 7.28.3 - vips_divide() failed for int arguments - fix warning for unused vips7 gvalue argument +- fix openslide read: always return png-style rgba, im_argb2rgba() becomes a + NOP 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken diff --git a/libvips/colour/Makefile.am b/libvips/colour/Makefile.am index 465fa53b..9fe708c6 100644 --- a/libvips/colour/Makefile.am +++ b/libvips/colour/Makefile.am @@ -6,7 +6,6 @@ libcolour_la_SOURCES = \ colour_dispatch.c \ derived.c \ im_icc_transform.c \ - im_argb2rgba.c \ im_LCh2Lab.c \ im_LCh2UCS.c \ im_Lab2LCh.c \ diff --git a/libvips/colour/colour_dispatch.c b/libvips/colour/colour_dispatch.c index eb4663ae..4534bd2d 100644 --- a/libvips/colour/colour_dispatch.c +++ b/libvips/colour/colour_dispatch.c @@ -640,25 +640,6 @@ static im_function rad2float_desc = { one_in_one_out /* Arg list */ }; -/* Call im_argb2rgba() via arg vector. - */ -static int -argb2rgba_vec( im_object *argv ) -{ - return( im_argb2rgba( argv[0], argv[1] ) ); -} - -/* Description of im_argb2rgba. - */ -static im_function argb2rgba_desc = { - "im_argb2rgba", /* Name */ - "convert pre-multipled argb to png-style rgba", /* Description */ - IM_FN_PIO, /* Flags */ - argb2rgba_vec, /* Dispatch function */ - IM_NUMBER( one_in_one_out ), /* Size of arg list */ - one_in_one_out /* Arg list */ -}; - /* Call im_float2rad() via arg vector. */ static int @@ -1204,7 +1185,6 @@ static im_function *colour_list[] = { &disp2Lab_desc, &disp2XYZ_desc, &float2rad_desc, - &argb2rgba_desc, &icc_ac2rc_desc, &icc_export_depth_desc, &icc_import_desc, diff --git a/libvips/colour/im_argb2rgba.c b/libvips/colour/im_argb2rgba.c deleted file mode 100644 index 90c3eac3..00000000 --- a/libvips/colour/im_argb2rgba.c +++ /dev/null @@ -1,110 +0,0 @@ -/* Convert pre-multipled argb to rgba - * - * 11/12/11 - * - from im_rad2float.c - */ - -/* - - This file is part of VIPS. - - VIPS is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - */ - -/* - - These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk - - */ - -#ifdef HAVE_CONFIG_H -#include -#endif /*HAVE_CONFIG_H*/ -#include - -#include -#include - -#include - -static void -argb2rgba( guint32 *in, VipsPel *out, int n, void *_bg ) -{ - guint32 bg = GPOINTER_TO_UINT( _bg ); - - int i; - - for( i = 0; i < n; i++ ) { - guint32 x = in[i]; - guint8 a = x >> 24; - - /* Convert from ARGB to RGBA and undo premultiplication. - */ - if( a != 0 ) { - out[0] = 255 * ((x >> 16) & 255) / a; - out[1] = 255 * ((x >> 8) & 255) / a; - out[2] = 255 * (x & 255) / a; - } - else { - /* Use background color. - */ - out[0] = (bg >> 16) & 255; - out[1] = (bg >> 8) & 255; - out[2] = bg & 255; - } - out[3] = a; - - out += 4; - } -} - -/** - * im_argb2rgba: - * @in: input image - * @out: output image - * - * Convert Cairo-style pre-multiplied argb to png-style rgba. Background - * pixels are painted with the metadata item "background-rgb". - * - * See also: im_openslide2vips(). - * - * Returns: 0 on success, -1 on error. - */ -int -im_argb2rgba( VipsImage *in, IMAGE *out ) -{ - guint32 bg; - - /* check for RAD coding - if( in->Coding != IM_CODING_RAD ) { - im_error( "im_rad2float", "%s", _( "not a RAD image" ) ); - return( -1 ); - } - */ - - if( im_cp_desc( out, in ) ) - return( -1 ); - out->Coding = IM_CODING_NONE; - - if( vips_image_get_int( in, VIPS_META_BACKGROUND_RGB, (int *) &bg ) ) - bg = 0xffffff; - - if( im_wrapone( in, out, - (im_wrapone_fn) argb2rgba, GUINT_TO_POINTER( bg ), NULL ) ) - return( -1 ); - - return( 0 ); -} diff --git a/libvips/deprecated/deprecated_dispatch.c b/libvips/deprecated/deprecated_dispatch.c index 2992f7b4..2bbeb062 100644 --- a/libvips/deprecated/deprecated_dispatch.c +++ b/libvips/deprecated/deprecated_dispatch.c @@ -2188,10 +2188,30 @@ static im_function ifthenelse_desc = { ifthenelse_args /* Arg list */ }; +/* Call im_argb2rgba() via arg vector. + */ +static int +argb2rgba_vec( im_object *argv ) +{ + return( im_argb2rgba( argv[0], argv[1] ) ); +} + +/* Description of im_argb2rgba. + */ +static im_function argb2rgba_desc = { + "im_argb2rgba", /* Name */ + "convert pre-multipled argb to png-style rgba", /* Description */ + IM_FN_PIO, /* Flags */ + argb2rgba_vec, /* Dispatch function */ + IM_NUMBER( one_in_one_out ), /* Size of arg list */ + one_in_one_out /* Arg list */ +}; + /* Package up all these functions. */ static im_function *deprecated_list[] = { + &argb2rgba_desc, &flood_copy_desc, &flood_blob_copy_desc, &flood_other_copy_desc, diff --git a/libvips/deprecated/vips7compat.c b/libvips/deprecated/vips7compat.c index b2fd04c4..b6398056 100644 --- a/libvips/deprecated/vips7compat.c +++ b/libvips/deprecated/vips7compat.c @@ -2098,3 +2098,11 @@ im_cache( VipsImage *in, VipsImage *out, return( vips_sink_screen( in, out, NULL, width, height, max, 0, NULL, NULL ) ); } + +int +im_argb2rgba( VipsImage *in, VipsImage *out ) +{ + /* No longer exists, just a null op. + */ + return( im_copy( in, out ) ); +} diff --git a/libvips/foreign/openslide2vips.c b/libvips/foreign/openslide2vips.c index 0d257336..6cfe15d7 100644 --- a/libvips/foreign/openslide2vips.c +++ b/libvips/foreign/openslide2vips.c @@ -26,6 +26,9 @@ * - turn into a set of read fns ready to be called from a class * 28/2/12 * - convert "layer" to "level" where externally visible + * 9/4/12 + * - move argb2rgba back in here, we don't have a use for coded pixels + * - small cleanups */ /* @@ -83,8 +86,9 @@ typedef struct { /* Only valid if associated == NULL. */ - int32_t layer; + int32_t level; double downsample; + uint32_t bg; } ReadSlide; int @@ -138,7 +142,7 @@ check_associated_image( openslide_t *osr, const char *name ) static ReadSlide * readslide_new( const char *filename, VipsImage *out, - int layer, const char *associated ) + int level, const char *associated ) { ReadSlide *rslide; int64_t w, h; @@ -150,7 +154,7 @@ readslide_new( const char *filename, VipsImage *out, g_signal_connect( out, "close", G_CALLBACK( readslide_destroy_cb ), rslide ); - rslide->layer = layer; + rslide->level = level; rslide->associated = g_strdup( associated ); rslide->osr = openslide_open( filename ); @@ -160,8 +164,8 @@ readslide_new( const char *filename, VipsImage *out, return( NULL ); } - if( layer < 0 || - layer >= openslide_get_layer_count( rslide->osr ) ) { + if( level < 0 || + level >= openslide_get_layer_count( rslide->osr ) ) { vips_error( "openslide2vips", "%s", _( "invalid slide level" ) ); return( NULL ); @@ -180,23 +184,17 @@ readslide_new( const char *filename, VipsImage *out, } else { openslide_get_layer_dimensions( rslide->osr, - layer, &w, &h ); + level, &w, &h ); rslide->downsample = openslide_get_layer_downsample( - rslide->osr, layer ); - vips_image_set_int( out, "slide-level", layer ); + rslide->osr, level ); + vips_image_set_int( out, "slide-level", level ); vips_demand_hint( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); } - /* This tag is used by argb2rgba() to paint fully-transparent pixels. - */ - background = openslide_get_property_value( rslide->osr, - OPENSLIDE_PROPERTY_NAME_BACKGROUND_COLOR ); - if( background != NULL ) - vips_image_set_int( out, - VIPS_META_BACKGROUND_RGB, - strtoul( background, NULL, 16 ) ); - else - vips_image_set_int( out, VIPS_META_BACKGROUND_RGB, 0xffffff ); + rslide->bg = 0xffffff; + if( (background = openslide_get_property_value( rslide->osr, + OPENSLIDE_PROPERTY_NAME_BACKGROUND_COLOR )) ) + rslide->bg = strtoul( background, NULL, 16 ); if( w < 0 || h < 0 || rslide->downsample < 0 ) { vips_error( "openslide2vips", _( "getting dimensions: %s" ), @@ -228,11 +226,11 @@ readslide_new( const char *filename, VipsImage *out, int vips__openslide_read_header( const char *filename, VipsImage *out, - int layer, char *associated ) + int level, char *associated ) { ReadSlide *rslide; - if( !(rslide = readslide_new( filename, out, layer, associated )) ) + if( !(rslide = readslide_new( filename, out, level, associated )) ) return( -1 ); return( 0 ); @@ -243,30 +241,31 @@ vips__openslide_generate( VipsRegion *out, void *seq, void *_rslide, void *unused, gboolean *stop ) { ReadSlide *rslide = _rslide; + uint32_t bg = rslide->bg; VipsRect *r = &out->valid; + int n = r->width * r->height; + uint32_t *buf = (uint32_t *) VIPS_REGION_ADDR( out, r->left, r->top ); const char *error; - int x, y; + int i; VIPS_DEBUG_MSG( "vips__openslide_generate: %dx%d @ %dx%d\n", r->width, r->height, r->left, r->top ); - /* Fill in tile-sized chunks. Some versions of OpenSlide can fail for - * very large requests. + /* We're inside a cache, so requests should always be TILE_WIDTH by + * TILE_HEIGHT pixels and on a tile boundary. */ - for( y = 0; y < r->height; y += TILE_HEIGHT ) - for( x = 0; x < r->width; x += TILE_WIDTH ) { - int w = VIPS_MIN( TILE_WIDTH, r->width - x ); - int h = VIPS_MIN( TILE_HEIGHT, r->height - y ); + g_assert( (r->left % TILE_WIDTH) == 0 ); + g_assert( (r->height % TILE_HEIGHT) == 0 ); + g_assert( r->width <= TILE_WIDTH ); + g_assert( r->height <= TILE_HEIGHT ); - openslide_read_region( rslide->osr, - (uint32_t *) VIPS_REGION_ADDR( out, - r->left + x, r->top + y ), - (r->left + x) * rslide->downsample, - (r->top + y) * rslide->downsample, - rslide->layer, - w, h ); - } + openslide_read_region( rslide->osr, + buf, + r->left * rslide->downsample, + r->top * rslide->downsample, + rslide->level, + r->width, r->height ); error = openslide_get_error( rslide->osr ); if( error ) { @@ -276,18 +275,41 @@ vips__openslide_generate( VipsRegion *out, return( -1 ); } + /* Convert from ARGB to RGBA and undo premultiplication. + */ + for( i = 0; i < n; i++ ) { + uint32_t x = buf[i]; + uint8_t a = x >> 24; + VipsPel *out = (VipsPel *) (buf + i); + + if( a != 0 ) { + out[0] = 255 * ((x >> 16) & 255) / a; + out[1] = 255 * ((x >> 8) & 255) / a; + out[2] = 255 * (x & 255) / a; + out[3] = a; + } + else { + /* Use background color. + */ + out[0] = (bg >> 16) & 255; + out[1] = (bg >> 8) & 255; + out[2] = bg & 255; + out[3] = 0; + } + } + return( 0 ); } int -vips__openslide_read( const char *filename, VipsImage *out, int layer ) +vips__openslide_read( const char *filename, VipsImage *out, int level ) { ReadSlide *rslide; VipsImage *raw; VipsImage *t; VIPS_DEBUG_MSG( "vips__openslide_read: %s %d\n", - filename, layer ); + filename, level ); /* Tile cache: keep enough for two complete rows of tiles. OpenSlide * has its own tile cache, but it's not large enough for a complete @@ -296,7 +318,7 @@ vips__openslide_read( const char *filename, VipsImage *out, int layer ) raw = vips_image_new(); vips_object_local( out, raw ); - if( !(rslide = readslide_new( filename, raw, layer, NULL )) ) + if( !(rslide = readslide_new( filename, raw, level, NULL )) ) return( -1 ); if( vips_image_generate( raw, diff --git a/libvips/include/vips/colour.h b/libvips/include/vips/colour.h index 6f6ea93d..802101ce 100644 --- a/libvips/include/vips/colour.h +++ b/libvips/include/vips/colour.h @@ -146,7 +146,6 @@ float im_col_dE00( int im_LCh2Lab( VipsImage *in, VipsImage *out ); int im_LabQ2XYZ( VipsImage *in, VipsImage *out ); int im_rad2float( VipsImage *in, VipsImage *out ); -int im_argb2rgba( VipsImage *in, VipsImage *out ); int im_float2rad( VipsImage *in, VipsImage *out ); int im_LCh2UCS( VipsImage *in, VipsImage *out ); int im_Lab2LCh( VipsImage *in, VipsImage *out ); diff --git a/libvips/include/vips/header.h b/libvips/include/vips/header.h index dcee0143..65cdc0d8 100644 --- a/libvips/include/vips/header.h +++ b/libvips/include/vips/header.h @@ -77,14 +77,6 @@ extern "C" { */ #define VIPS_META_RESOLUTION_UNIT "resolution-unit" -/** - * VIPS_META_BACKGROUND_RGB: - * - * The OpenSlide load operator uses this to note the colour to use to paint - * transparent pixels in pre-multiplied ARGB format. See im_argb2rgba(). - */ -#define VIPS_META_BACKGROUND_RGB "background-rgb" - guint64 vips_format_sizeof( VipsBandFormat format ); int vips_image_get_width( const VipsImage *image ); diff --git a/libvips/include/vips/vips7compat.h b/libvips/include/vips/vips7compat.h index a661710e..3765bf48 100644 --- a/libvips/include/vips/vips7compat.h +++ b/libvips/include/vips/vips7compat.h @@ -648,6 +648,7 @@ int im_mask2vips( DOUBLEMASK *in, VipsImage *out ); int im_bandmean( VipsImage *in, VipsImage *out ); int im_recomb( VipsImage *in, VipsImage *out, DOUBLEMASK *recomb ); +int im_argb2rgba( VipsImage *in, VipsImage *out ); /* ruby-vips uses this */ From 7af1fb34d7a50b763d226619e97b5fdee9d520bb Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Tue, 10 Apr 2012 14:26:41 +0100 Subject: [PATCH 07/17] cast to unsigned int did not remove <0 previously cast to uint did nothing (since the positive range of uint is greater than int), now it changes <0 values to 0 --- ChangeLog | 1 + libvips/conversion/cast.c | 4 +++- libvips/include/vips/util.h | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f0cb18ae..167e0449 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,7 @@ - fix warning for unused vips7 gvalue argument - fix openslide read: always return png-style rgba, im_argb2rgba() becomes a NOP +- cast to unsigned int now removes <0 values 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken diff --git a/libvips/conversion/cast.c b/libvips/conversion/cast.c index 9e5d05f7..a18c2357 100644 --- a/libvips/conversion/cast.c +++ b/libvips/conversion/cast.c @@ -45,6 +45,8 @@ * - gtk-doc * 27/10/11 * - redone as a class + * 10/4/12 + * - cast to uint now removes <0 values */ /* @@ -288,7 +290,7 @@ vips_cast_start( VipsImage *out, void *a, void *b ) break; \ \ case VIPS_FORMAT_UINT: \ - INT( ITYPE, unsigned int, VIPS_CLIP_NONE ); \ + INT( ITYPE, unsigned int, VIPS_CLIP_UINT ); \ break; \ \ case VIPS_FORMAT_INT: \ diff --git a/libvips/include/vips/util.h b/libvips/include/vips/util.h index 4d235fd0..cf508778 100644 --- a/libvips/include/vips/util.h +++ b/libvips/include/vips/util.h @@ -146,6 +146,14 @@ G_STMT_START { \ } \ } G_STMT_END +#define VIPS_CLIP_UINT( V, SEQ ) \ +G_STMT_START { \ + if( (V) < 0 ) { \ + (SEQ)->underflow++; \ + (V) = 0; \ + } \ +} G_STMT_END + #define VIPS_CLIP_NONE( V, SEQ ) {} const char *vips_enum_string( GType enm, int value ); From 3540e3ef09b8b0701e3a7365c2205f09654ed997 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Wed, 11 Apr 2012 12:48:41 +0100 Subject: [PATCH 08/17] support :level,associated in the vips7 openslide the vips7 stub for openslide now supports :level,associated mode options, eg: $ header CMU-2.svs CMU-2.svs: 19500x7615 uchar, 4 bands, rgb VipsImage (0x236a060) $ header CMU-2.svs:2 CMU-2.svs:2: 4875x1903 uchar, 4 bands, rgb VipsImage (0x244c060) $ header CMU-2.svs:,label CMU-2.svs:,label: 387x463 uchar, 4 bands, rgb VipsImage (0xa2d060) $ header CMU-2.svs:2,label CMU-2.svs:2,label: 387x463 uchar, 4 bands, rgb VipsImage (0x1b23060) --- ChangeLog | 1 + libvips/deprecated/im_openslide2vips.c | 23 +++++++++++++++++++++-- python/try4.py | 12 ++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100755 python/try4.py diff --git a/ChangeLog b/ChangeLog index 167e0449..3195c391 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ - fix openslide read: always return png-style rgba, im_argb2rgba() becomes a NOP - cast to unsigned int now removes <0 values +- vips7 interface to openslide now supports :,level,associated options 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken diff --git a/libvips/deprecated/im_openslide2vips.c b/libvips/deprecated/im_openslide2vips.c index 4a2ccf88..f4d9e120 100644 --- a/libvips/deprecated/im_openslide2vips.c +++ b/libvips/deprecated/im_openslide2vips.c @@ -2,6 +2,8 @@ * * 17/12/11 * - just a stub + * 11/4/12 + * - support :level,associated in filenames */ /* @@ -49,11 +51,28 @@ #include static int -im_openslide2vips( const char *filename, IMAGE *out ) +im_openslide2vips( const char *name, IMAGE *out ) { + char filename[FILENAME_MAX]; + char mode[FILENAME_MAX]; + char *p, *q; + char *associated; + int level; VipsImage *t; - if( vips_openslideload( filename, &t, NULL ) ) + im_filename_split( name, filename, mode ); + level = 1; + associated = NULL; + p = &mode[0]; + if( (q = im_getnextoption( &p )) ) + level = atoi( q ); + if( (q = im_getnextoption( &p )) ) + associated = q; + + if( vips_openslideload( filename, &t, + "level", level, + "associated", associated, + NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); diff --git a/python/try4.py b/python/try4.py new file mode 100755 index 00000000..35a20724 --- /dev/null +++ b/python/try4.py @@ -0,0 +1,12 @@ +#!/usr/bin/python + +import sys +from vips8 import vips +from gi.repository import Vips + +a = vips.Image(sys.argv[1]) +b = vips.Image(sys.argv[2]) + +c = a.join(b, Vips.Direction.HORIZONTAL, expand = True) + +c.write_to_file(sys.argv[3]) From 7ef00a3d7e99a03f37d8682f8efefc4ed48e8a3c Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Wed, 11 Apr 2012 14:41:30 +0100 Subject: [PATCH 09/17] fix a cache warning you can now call vips_cache_set_max() and friends just after vips_init() ... previously you had to wait for the cache to be built --- libvips/iofuncs/cache.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libvips/iofuncs/cache.c b/libvips/iofuncs/cache.c index 9a137a5d..4434ded3 100644 --- a/libvips/iofuncs/cache.c +++ b/libvips/iofuncs/cache.c @@ -542,7 +542,8 @@ vips_cache_trim( void ) { VipsOperation *operation; - while( (g_hash_table_size( vips_cache_table ) > vips_cache_max || + while( vips_cache_table && + (g_hash_table_size( vips_cache_table ) > vips_cache_max || vips_tracked_get_files() > vips_cache_max_files || vips_tracked_get_mem() > vips_cache_max_mem) && (operation = vips_cache_select()) ) { From d6e16adcc77ec541c96e80ac4bafd29b23d7d953 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Wed, 11 Apr 2012 12:41:15 -0400 Subject: [PATCH 10/17] convert remaining layer variables to level For consistency with openslide2vips.c. --- libvips/foreign/openslide2vips.h | 4 ++-- libvips/foreign/openslideload.c | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/libvips/foreign/openslide2vips.h b/libvips/foreign/openslide2vips.h index 8fc6cdec..83b0bf27 100644 --- a/libvips/foreign/openslide2vips.h +++ b/libvips/foreign/openslide2vips.h @@ -36,9 +36,9 @@ extern "C" { int vips__openslide_isslide( const char *filename ); int vips__openslide_read_header( const char *filename, VipsImage *out, - int layer, char *associated ); + int level, char *associated ); int vips__openslide_read( const char *filename, VipsImage *out, - int layer ); + int level ); int vips__openslide_read_associated( const char *filename, VipsImage *out, const char *associated ); diff --git a/libvips/foreign/openslideload.c b/libvips/foreign/openslideload.c index 23abd2f1..11b7b2f3 100644 --- a/libvips/foreign/openslideload.c +++ b/libvips/foreign/openslideload.c @@ -4,6 +4,8 @@ * - from openslideload.c * 28/2/12 * - convert "layer" to "level" where externally visible + * 11/4/12 + * - convert remaining uses of "layer" to "level" */ /* @@ -60,9 +62,9 @@ typedef struct _VipsForeignLoadOpenslide { */ char *filename; - /* Load this layer. + /* Load this level. */ - int layer; + int level; /* Load this associated image. */ @@ -103,7 +105,7 @@ vips_foreign_load_openslide_header( VipsForeignLoad *load ) VipsForeignLoadOpenslide *openslide = (VipsForeignLoadOpenslide *) load; if( vips__openslide_read_header( openslide->filename, load->out, - openslide->layer, openslide->associated ) ) + openslide->level, openslide->associated ) ) return( -1 ); return( 0 ); @@ -116,7 +118,7 @@ vips_foreign_load_openslide_load( VipsForeignLoad *load ) if( !openslide->associated ) { if( vips__openslide_read( openslide->filename, load->real, - openslide->layer ) ) + openslide->level ) ) return( -1 ); } else { @@ -183,7 +185,7 @@ vips_foreign_load_openslide_class_init( VipsForeignLoadOpenslideClass *class ) _( "Level" ), _( "Load this level from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, - G_STRUCT_OFFSET( VipsForeignLoadOpenslide, layer ), + G_STRUCT_OFFSET( VipsForeignLoadOpenslide, level ), 0, 100000, 0 ); VIPS_ARG_STRING( class, "associated", 11, From 9fb078461c4b5f3de7f694d4fdf97b6b421c0510 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Wed, 11 Apr 2012 13:57:34 -0400 Subject: [PATCH 11/17] default to level 0 in vips7 OpenSlide This matches the vips8 OpenSlide behavior. --- libvips/deprecated/im_openslide2vips.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libvips/deprecated/im_openslide2vips.c b/libvips/deprecated/im_openslide2vips.c index f4d9e120..bce56b63 100644 --- a/libvips/deprecated/im_openslide2vips.c +++ b/libvips/deprecated/im_openslide2vips.c @@ -61,7 +61,7 @@ im_openslide2vips( const char *name, IMAGE *out ) VipsImage *t; im_filename_split( name, filename, mode ); - level = 1; + level = 0; associated = NULL; p = &mode[0]; if( (q = im_getnextoption( &p )) ) From 334452d6818bb226ad9edfec9210181215d11cf9 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Wed, 11 Apr 2012 13:59:41 -0400 Subject: [PATCH 12/17] fail if both level and associated image are specified rather than silently ignoring the level. --- libvips/foreign/openslide2vips.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libvips/foreign/openslide2vips.c b/libvips/foreign/openslide2vips.c index 6cfe15d7..4a03e1a6 100644 --- a/libvips/foreign/openslide2vips.c +++ b/libvips/foreign/openslide2vips.c @@ -29,6 +29,8 @@ * 9/4/12 * - move argb2rgba back in here, we don't have a use for coded pixels * - small cleanups + * 11/4/12 + * - fail if both level and associated image are specified */ /* @@ -149,6 +151,13 @@ readslide_new( const char *filename, VipsImage *out, const char *background; const char * const *properties; + if( level && associated ) { + vips_error( "openslide2vips", + "%s", _( "specify only one of level or associated " + "image" ) ); + return( NULL ); + } + rslide = VIPS_NEW( out, ReadSlide ); memset( rslide, 0, sizeof( *rslide ) ); g_signal_connect( out, "close", G_CALLBACK( readslide_destroy_cb ), From 5e1b4f2c00ec14096607cae77b3645c85d151963 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Wed, 11 Apr 2012 14:07:04 -0400 Subject: [PATCH 13/17] fail vips7 openslide if level argument is not numeric in case users forget the leading comma when specifying an associated image, etc. --- libvips/deprecated/im_openslide2vips.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libvips/deprecated/im_openslide2vips.c b/libvips/deprecated/im_openslide2vips.c index bce56b63..49b14af6 100644 --- a/libvips/deprecated/im_openslide2vips.c +++ b/libvips/deprecated/im_openslide2vips.c @@ -58,14 +58,21 @@ im_openslide2vips( const char *name, IMAGE *out ) char *p, *q; char *associated; int level; + char *endptr; VipsImage *t; im_filename_split( name, filename, mode ); level = 0; associated = NULL; p = &mode[0]; - if( (q = im_getnextoption( &p )) ) - level = atoi( q ); + if( (q = im_getnextoption( &p )) ) { + level = strtoul( q, &endptr, 10 ); + if( *endptr ) { + vips_error( "openslide2vips", "%s", + _( "level must be a number" ) ); + return( -1 ); + } + } if( (q = im_getnextoption( &p )) ) associated = q; From b47ad26f50aa6f66233fb305641081aa7391743a Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Thu, 12 Apr 2012 08:41:40 +0100 Subject: [PATCH 14/17] make vips8 cache smaller --- ChangeLog | 1 + libvips/iofuncs/cache.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3195c391..3c2ea093 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ NOP - cast to unsigned int now removes <0 values - vips7 interface to openslide now supports :,level,associated options +- make vips8 cache smaller 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken diff --git a/libvips/iofuncs/cache.c b/libvips/iofuncs/cache.c index 4434ded3..8acb9923 100644 --- a/libvips/iofuncs/cache.c +++ b/libvips/iofuncs/cache.c @@ -74,18 +74,23 @@ char *vips__cache_max_files = NULL; gboolean vips__cache_dump = FALSE; gboolean vips__cache_trace = FALSE; -/* Max number of cached operations. +/* Max number of cached operations. We are likely to trim due to memuse or + * file use before we hit this limit. */ static int vips_cache_max = 10000; /* How many tracked open files we allow before we start dropping cache. */ -static int vips_cache_max_files = 900; +static int vips_cache_max_files = 100; /* How much RAM we spend on caches before we start dropping cached operations - * ... default 1gb. + * ... default 100mb. + * + * It was 1gb, but that's a lot of memory for things like vipsthumbnail where + * there will be (almost) no reuse. Default low and let apps raise it if it'd + * be useful. */ -static size_t vips_cache_max_mem = 1024 * 1024 * 1024; +static size_t vips_cache_max_mem = 100 * 1024 * 1024; /* Hold a ref to all "recent" operations. */ From 0290eb009d8edee0af4523a78968a76639f0d87f Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Thu, 12 Apr 2012 10:01:17 +0100 Subject: [PATCH 15/17] more accurate progress reporting computation progress used to be done incrementally based on the number of tiles allocated. This did not take account of half tiles at image edges, so you could sometimes see "110% complete" it's now calculated based on the absolute number of pixels processed, so it should always report 100% at the end. --- ChangeLog | 1 + libvips/include/vips/image.h | 2 +- libvips/iofuncs/image.c | 18 +++++++++--------- libvips/iofuncs/sink.c | 12 ++++++++---- libvips/iofuncs/sink.h | 4 ++++ libvips/iofuncs/sinkdisc.c | 4 ++++ libvips/iofuncs/sinkmemory.c | 4 ++++ 7 files changed, 31 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3c2ea093..069101f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,7 @@ - cast to unsigned int now removes <0 values - vips7 interface to openslide now supports :,level,associated options - make vips8 cache smaller +- more accurate progress reporting 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken diff --git a/libvips/include/vips/image.h b/libvips/include/vips/image.h index cd5e1d44..e93d3e3c 100644 --- a/libvips/include/vips/image.h +++ b/libvips/include/vips/image.h @@ -476,7 +476,7 @@ int vips_image_written( VipsImage *image ); void vips_image_invalidate_all( VipsImage *image ); void vips_image_preeval( VipsImage *image ); -void vips_image_eval( VipsImage *image, int w, int h ); +void vips_image_eval( VipsImage *image, guint64 processed ); void vips_image_posteval( VipsImage *image ); void vips_image_set_progress( VipsImage *image, gboolean progress ); diff --git a/libvips/iofuncs/image.c b/libvips/iofuncs/image.c index 0f40aa79..de8c2f99 100644 --- a/libvips/iofuncs/image.c +++ b/libvips/iofuncs/image.c @@ -1092,8 +1092,8 @@ vips_progress_add( VipsImage *image ) return( 0 ); } -void -vips_progress_update( VipsProgress *progress, int w, int h ) +static void +vips_progress_update( VipsProgress *progress, guint64 processed ) { float prop; @@ -1102,11 +1102,11 @@ vips_progress_update( VipsProgress *progress, int w, int h ) g_assert( progress ); progress->run = g_timer_elapsed( progress->start, NULL ); - progress->npels += w * h; + progress->npels = processed; prop = (float) progress->npels / (float) progress->tpels; progress->percent = 100 * prop; - /* Don't estiomate eta until we are 10% in. + /* Don't estimate eta until we are 10% in. */ if( prop > 0.1 ) progress->eta = (1.0 / prop) * progress->run - progress->run; @@ -1135,10 +1135,10 @@ vips_image_preeval( VipsImage *image ) } } -/* Another w * h pixels have been processed. +/* Updated the number of pixels that have been processed. */ void -vips_image_eval( VipsImage *image, int w, int h ) +vips_image_eval( VipsImage *image, guint64 processed ) { if( image->progress_signal ) { VIPS_DEBUG_MSG( "vips_image_eval: %p\n", image ); @@ -1146,7 +1146,7 @@ vips_image_eval( VipsImage *image, int w, int h ) g_assert( vips_object_sanity( VIPS_OBJECT( image->progress_signal ) ) ); - vips_progress_update( image->time, w, h ); + vips_progress_update( image->time, processed ); /* For vips7 compat, update the ->time on the signalling image * too, even though it may have a different width/height to @@ -1154,7 +1154,7 @@ vips_image_eval( VipsImage *image, int w, int h ) */ if( image->progress_signal->time != image->time ) vips_progress_update( image->progress_signal->time, - w, h ); + processed ); g_signal_emit( image->progress_signal, vips_image_signals[SIG_EVAL], 0, image->time ); @@ -1878,7 +1878,7 @@ vips_image_write_line( VipsImage *image, int ypos, VipsPel *linebuffer ) /* Trigger evaluation callbacks for this image. */ - vips_image_eval( image, image->Xsize, 1 ); + vips_image_eval( image, ypos * image->Xsize ); if( vips_image_get_kill( image ) ) return( -1 ); diff --git a/libvips/iofuncs/sink.c b/libvips/iofuncs/sink.c index 1f05ed91..b34e90dd 100644 --- a/libvips/iofuncs/sink.c +++ b/libvips/iofuncs/sink.c @@ -211,6 +211,8 @@ vips_sink_base_init( SinkBase *sink_base, VipsImage *image ) vips_get_tile_size( image, &sink_base->tile_width, &sink_base->tile_height, &sink_base->nlines ); + + sink_base->processed = 0; } static int @@ -283,6 +285,10 @@ vips_sink_base_allocate( VipsThreadState *state, void *a, gboolean *stop ) */ sink_base->x += sink_base->tile_width; + /* Add the number of pixels we've just allocated to progress. + */ + sink_base->processed += state->pos.width * state->pos.height; + return( 0 ); } @@ -305,14 +311,12 @@ vips_sink_base_progress( void *a ) { SinkBase *sink_base = (SinkBase *) a; - VIPS_DEBUG_MSG( "vips_sink_base_progress: %d x %d\n", - sink_base->tile_width, sink_base->tile_height ); + VIPS_DEBUG_MSG( "vips_sink_base_progress:\n" ); /* Trigger any eval callbacks on our source image and * check for errors. */ - vips_image_eval( sink_base->im, - sink_base->tile_width, sink_base->tile_height ); + vips_image_eval( sink_base->im, sink_base->processed ); if( vips_image_get_kill( sink_base->im ) ) return( -1 ); diff --git a/libvips/iofuncs/sink.h b/libvips/iofuncs/sink.h index e520fc0c..38843506 100644 --- a/libvips/iofuncs/sink.h +++ b/libvips/iofuncs/sink.h @@ -56,6 +56,10 @@ typedef struct _SinkBase { int tile_height; int nlines; + /* The number of pixels allocate has allocated. Used for progress + * feedback. + */ + guint64 processed; } SinkBase; /* Some function we can share. diff --git a/libvips/iofuncs/sinkdisc.c b/libvips/iofuncs/sinkdisc.c index 432a0992..a8bda0b7 100644 --- a/libvips/iofuncs/sinkdisc.c +++ b/libvips/iofuncs/sinkdisc.c @@ -396,6 +396,10 @@ wbuffer_allocate_fn( VipsThreadState *state, void *a, gboolean *stop ) */ sink_base->x += sink_base->tile_width; + /* Add the number of pixels we've just allocated to progress. + */ + sink_base->processed += state->pos.width * state->pos.height; + return( 0 ); } diff --git a/libvips/iofuncs/sinkmemory.c b/libvips/iofuncs/sinkmemory.c index 375d5916..3b55d690 100644 --- a/libvips/iofuncs/sinkmemory.c +++ b/libvips/iofuncs/sinkmemory.c @@ -240,6 +240,10 @@ sink_memory_area_allocate_fn( VipsThreadState *state, void *a, gboolean *stop ) */ sink_base->x += sink_base->tile_width; + /* Add the number of pixels we've just allocated to progress. + */ + sink_base->processed += state->pos.width * state->pos.height; + return( 0 ); } From 04c7f97cf4c7925cefce6556c1b751fdeb7b013e Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Tue, 17 Apr 2012 11:28:40 +0100 Subject: [PATCH 16/17] prepare for release --- ChangeLog | 3 +- po/POTFILES.in | 503 ++++---- po/vips7.pot | 3007 ++++++++++++++++++++++++------------------------ 3 files changed, 1764 insertions(+), 1749 deletions(-) diff --git a/ChangeLog b/ChangeLog index 069101f6..dca0d0b5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,8 @@ - fix openslide read: always return png-style rgba, im_argb2rgba() becomes a NOP - cast to unsigned int now removes <0 values -- vips7 interface to openslide now supports :,level,associated options +- vips7 interface to openslide now supports :,level,associated options (thanks + Benjamin) - make vips8 cache smaller - more accurate progress reporting diff --git a/po/POTFILES.in b/po/POTFILES.in index b042819c..8891591c 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,255 +1,255 @@ -libvips/arithmetic/abs.c -libvips/arithmetic/statistic.c -libvips/arithmetic/im_point_bilinear.c -libvips/arithmetic/im_linreg.c -libvips/arithmetic/arith_dispatch.c libvips/arithmetic/linear.c -libvips/arithmetic/remainder.c -libvips/arithmetic/multiply.c -libvips/arithmetic/im_maxpos_avg.c -libvips/arithmetic/im_maxpos_vec.c -libvips/arithmetic/min.c -libvips/arithmetic/boolean.c -libvips/arithmetic/arithmetic.c -libvips/arithmetic/add.c +libvips/arithmetic/avg.c +libvips/arithmetic/divide.c +libvips/arithmetic/arith_dispatch.c +libvips/arithmetic/measure.c libvips/arithmetic/stats.c libvips/arithmetic/math2.c -libvips/arithmetic/divide.c +libvips/arithmetic/im_linreg.c libvips/arithmetic/round.c -libvips/arithmetic/measure.c -libvips/arithmetic/math.c -libvips/arithmetic/relational.c -libvips/arithmetic/im_cross_phase.c -libvips/arithmetic/unaryconst.c -libvips/arithmetic/unary.c -libvips/arithmetic/invert.c -libvips/arithmetic/max.c -libvips/arithmetic/complex.c -libvips/arithmetic/avg.c libvips/arithmetic/deviate.c +libvips/arithmetic/unary.c +libvips/arithmetic/unaryconst.c +libvips/arithmetic/add.c +libvips/arithmetic/arithmetic.c +libvips/arithmetic/multiply.c +libvips/arithmetic/min.c +libvips/arithmetic/im_point_bilinear.c +libvips/arithmetic/complex.c +libvips/arithmetic/im_cross_phase.c +libvips/arithmetic/im_maxpos_avg.c +libvips/arithmetic/invert.c +libvips/arithmetic/remainder.c +libvips/arithmetic/math.c +libvips/arithmetic/abs.c +libvips/arithmetic/relational.c libvips/arithmetic/binary.c -libvips/arithmetic/subtract.c libvips/arithmetic/sign.c +libvips/arithmetic/subtract.c +libvips/arithmetic/im_maxpos_vec.c +libvips/arithmetic/statistic.c +libvips/arithmetic/boolean.c +libvips/arithmetic/max.c libvips/cimg/cimg_dispatch.c -libvips/colour/im_rad2float.c -libvips/colour/im_LCh2UCS.c -libvips/colour/im_icc_transform.c -libvips/colour/disp.c -libvips/colour/im_dE_fromLab.c -libvips/colour/im_Yxy2XYZ.c -libvips/colour/im_LabQ2disp.c -libvips/colour/im_Lab2LabS.c -libvips/colour/im_LabQ2Lab.c -libvips/colour/im_UCS2LCh.c -libvips/colour/im_LabS2Lab.c -libvips/colour/im_dECMC_fromLab.c -libvips/colour/im_LabQ2LabS.c -libvips/colour/im_Lab2XYZ.c -libvips/colour/im_disp2XYZ.c libvips/colour/im_XYZ2disp.c +libvips/colour/im_LabQ2LabS.c +libvips/colour/im_dECMC_fromLab.c +libvips/colour/colour_dispatch.c +libvips/colour/im_LCh2UCS.c +libvips/colour/im_Lab2LabQ.c +libvips/colour/im_Lab2LabS.c +libvips/colour/im_XYZ2Yxy.c +libvips/colour/im_disp2XYZ.c +libvips/colour/im_UCS2LCh.c +libvips/colour/im_LabQ2Lab.c +libvips/colour/disp.c +libvips/colour/im_LCh2Lab.c libvips/colour/colour.c +libvips/colour/im_rad2float.c +libvips/colour/im_icc_transform.c +libvips/colour/derived.c libvips/colour/im_float2rad.c libvips/colour/im_Lab2LCh.c -libvips/colour/colour_dispatch.c -libvips/colour/derived.c -libvips/colour/im_argb2rgba.c -libvips/colour/im_LabS2LabQ.c +libvips/colour/im_LabS2Lab.c libvips/colour/im_dE00_fromLab.c -libvips/colour/im_lab_morph.c -libvips/colour/im_XYZ2Yxy.c -libvips/colour/im_Lab2LabQ.c -libvips/colour/im_LCh2Lab.c libvips/colour/im_XYZ2Lab.c -libvips/conversion/im_gaussnoise.c +libvips/colour/im_Yxy2XYZ.c +libvips/colour/im_lab_morph.c +libvips/colour/im_dE_fromLab.c +libvips/colour/im_Lab2XYZ.c +libvips/colour/im_LabQ2disp.c +libvips/colour/im_LabS2LabQ.c +libvips/conversion/flip.c libvips/conversion/bandmean.c +libvips/conversion/im_zoom.c +libvips/conversion/im_system.c +libvips/conversion/im_gaussnoise.c +libvips/conversion/bandary.c libvips/conversion/cast.c +libvips/conversion/conversion.c +libvips/conversion/im_subsample.c +libvips/conversion/im_grid.c +libvips/conversion/extract.c +libvips/conversion/bandjoin.c +libvips/conversion/im_msb.c +libvips/conversion/im_copy_file.c +libvips/conversion/black.c +libvips/conversion/copy.c +libvips/conversion/rot.c +libvips/conversion/im_scale.c +libvips/conversion/replicate.c +libvips/conversion/join.c +libvips/conversion/im_text.c +libvips/conversion/conver_dispatch.c +libvips/conversion/im_scaleps.c +libvips/conversion/im_wrap.c +libvips/conversion/insert.c +libvips/conversion/tilecache.c +libvips/conversion/im_system_image.c +libvips/conversion/embed.c +libvips/conversion/cache.c libvips/conversion/im_falsecolour.c libvips/conversion/ifthenelse.c -libvips/conversion/insert.c -libvips/conversion/im_system.c -libvips/conversion/tilecache.c -libvips/conversion/im_text.c -libvips/conversion/im_zoom.c -libvips/conversion/conver_dispatch.c -libvips/conversion/extract.c -libvips/conversion/im_copy_file.c -libvips/conversion/embed.c -libvips/conversion/im_grid.c -libvips/conversion/im_scaleps.c -libvips/conversion/im_scale.c -libvips/conversion/join.c -libvips/conversion/rot.c -libvips/conversion/flip.c -libvips/conversion/copy.c -libvips/conversion/bandary.c -libvips/conversion/im_wrap.c -libvips/conversion/conversion.c libvips/conversion/recomb.c -libvips/conversion/replicate.c -libvips/conversion/black.c -libvips/conversion/im_msb.c -libvips/conversion/im_system_image.c -libvips/conversion/cache.c -libvips/conversion/im_subsample.c -libvips/conversion/bandjoin.c -libvips/convolution/im_contrast_surface.c -libvips/convolution/im_aconvsep.c -libvips/convolution/im_gradcor.c -libvips/convolution/im_compass.c +libvips/conversion/sequential.c libvips/convolution/im_conv.c libvips/convolution/im_fastcor.c -libvips/convolution/convol_dispatch.c -libvips/convolution/im_conv_f.c -libvips/convolution/im_addgnoise.c +libvips/convolution/im_contrast_surface.c +libvips/convolution/im_compass.c libvips/convolution/im_spcor.c -libvips/convolution/im_sharpen.c +libvips/convolution/im_gradcor.c +libvips/convolution/im_conv_f.c +libvips/convolution/im_aconvsep.c +libvips/convolution/convol_dispatch.c libvips/convolution/im_aconv.c -libvips/foreign/rawload.c -libvips/foreign/fitssave.c -libvips/foreign/ppmload.c -libvips/foreign/radload.c -libvips/foreign/openslideload.c -libvips/foreign/tiffload.c -libvips/foreign/fitsload.c -libvips/foreign/vipssave.c -libvips/foreign/radsave.c -libvips/foreign/openexrload.c -libvips/foreign/analyzeload.c -libvips/foreign/pngload.c -libvips/foreign/tiffsave.c -libvips/foreign/csv.c -libvips/foreign/vipsload.c -libvips/foreign/magickload.c -libvips/foreign/matload.c -libvips/foreign/jpegload.c -libvips/foreign/openslide2vips.c -libvips/foreign/analyze2vips.c -libvips/foreign/tiff2vips.c -libvips/foreign/jpegsave.c +libvips/convolution/im_addgnoise.c +libvips/convolution/im_sharpen.c libvips/foreign/rawsave.c -libvips/foreign/ppmsave.c -libvips/foreign/vips2jpeg.c -libvips/foreign/openexr2vips.c +libvips/foreign/radload.c +libvips/foreign/tiffload.c libvips/foreign/magick2vips.c +libvips/foreign/ppmsave.c +libvips/foreign/vipsload.c +libvips/foreign/pngload.c +libvips/foreign/analyze2vips.c +libvips/foreign/jpeg2vips.c +libvips/foreign/radiance.c +libvips/foreign/openexrload.c +libvips/foreign/tiffsave.c +libvips/foreign/analyzeload.c +libvips/foreign/jpegsave.c +libvips/foreign/vips2jpeg.c +libvips/foreign/ppm.c +libvips/foreign/fitsload.c +libvips/foreign/ppmload.c +libvips/foreign/csvload.c +libvips/foreign/magickload.c +libvips/foreign/openslideload.c +libvips/foreign/csvsave.c +libvips/foreign/jpegload.c +libvips/foreign/rawload.c +libvips/foreign/openexr2vips.c +libvips/foreign/tiff2vips.c +libvips/foreign/csv.c +libvips/foreign/matload.c +libvips/foreign/fitssave.c +libvips/foreign/radsave.c +libvips/foreign/vipssave.c +libvips/foreign/fits.c +libvips/foreign/openslide2vips.c +libvips/foreign/pngsave.c +libvips/foreign/vips2tiff.c +libvips/foreign/foreign.c libvips/foreign/vipspng.c libvips/foreign/matlab.c -libvips/foreign/jpeg2vips.c -libvips/foreign/fits.c -libvips/foreign/csvsave.c -libvips/foreign/ppm.c -libvips/foreign/vips2tiff.c -libvips/foreign/radiance.c -libvips/foreign/csvload.c -libvips/foreign/pngsave.c -libvips/foreign/foreign.c -libvips/freq_filt/im_freq_mask.c libvips/freq_filt/im_phasecor_fft.c -libvips/freq_filt/fmaskcir.c -libvips/freq_filt/im_fractsurf.c libvips/freq_filt/im_freqflt.c +libvips/freq_filt/im_fractsurf.c +libvips/freq_filt/im_freq_mask.c +libvips/freq_filt/freq_dispatch.c +libvips/freq_filt/im_disp_ps.c +libvips/freq_filt/im_fwfft.c +libvips/freq_filt/im_invfftr.c +libvips/freq_filt/fmaskcir.c libvips/freq_filt/fmask4th.c libvips/freq_filt/im_invfft.c -libvips/freq_filt/freq_dispatch.c libvips/freq_filt/im_rotquad.c -libvips/freq_filt/im_invfftr.c -libvips/freq_filt/im_fwfft.c -libvips/freq_filt/im_disp_ps.c -libvips/histograms_lut/im_gammacorrect.c -libvips/histograms_lut/im_hist.c -libvips/histograms_lut/im_project.c -libvips/histograms_lut/im_stdif.c -libvips/histograms_lut/im_mpercent.c +libvips/histograms_lut/im_histeq.c +libvips/histograms_lut/im_buildlut.c libvips/histograms_lut/im_histnD.c libvips/histograms_lut/im_histspec.c -libvips/histograms_lut/im_identity.c -libvips/histograms_lut/im_histindexed.c -libvips/histograms_lut/hist_dispatch.c -libvips/histograms_lut/im_hsp.c -libvips/histograms_lut/im_histgr.c -libvips/histograms_lut/im_buildlut.c -libvips/histograms_lut/tone.c -libvips/histograms_lut/im_histeq.c -libvips/histograms_lut/im_histplot.c -libvips/histograms_lut/im_lhisteq.c -libvips/histograms_lut/im_invertlut.c libvips/histograms_lut/im_heq.c +libvips/histograms_lut/im_hist.c +libvips/histograms_lut/im_stdif.c +libvips/histograms_lut/im_invertlut.c +libvips/histograms_lut/im_histplot.c +libvips/histograms_lut/im_project.c +libvips/histograms_lut/im_gammacorrect.c +libvips/histograms_lut/im_hsp.c +libvips/histograms_lut/im_mpercent.c +libvips/histograms_lut/im_histgr.c +libvips/histograms_lut/hist_dispatch.c +libvips/histograms_lut/im_histindexed.c +libvips/histograms_lut/tone.c +libvips/histograms_lut/im_lhisteq.c +libvips/histograms_lut/im_identity.c libvips/histograms_lut/im_maplut.c libvips/inplace/im_draw_point.c +libvips/inplace/im_draw_line.c +libvips/inplace/im_draw_rect.c libvips/inplace/im_draw_image.c libvips/inplace/draw.c libvips/inplace/flood.c -libvips/inplace/im_draw_smudge.c -libvips/inplace/im_draw_rect.c -libvips/inplace/im_draw_line.c libvips/inplace/im_draw_circle.c libvips/inplace/im_draw_mask.c +libvips/inplace/im_draw_smudge.c libvips/inplace/inplace_dispatch.c -libvips/iofuncs/sink.c -libvips/iofuncs/rect.c -libvips/iofuncs/semaphore.c -libvips/iofuncs/memory.c -libvips/iofuncs/vips.c -libvips/iofuncs/generate.c -libvips/iofuncs/region.c -libvips/iofuncs/init.c -libvips/iofuncs/image.c -libvips/iofuncs/sinkscreen.c libvips/iofuncs/vector.c -libvips/iofuncs/mapfile.c -libvips/iofuncs/base64.c -libvips/iofuncs/type.c -libvips/iofuncs/object.c -libvips/iofuncs/buf.c -libvips/iofuncs/util.c -libvips/iofuncs/enumtypes.c libvips/iofuncs/operation.c -libvips/iofuncs/header.c -libvips/iofuncs/sinkmemory.c -libvips/iofuncs/window.c libvips/iofuncs/sinkdisc.c +libvips/iofuncs/vips.c libvips/iofuncs/buffer.c -libvips/iofuncs/cache.c +libvips/iofuncs/enumtypes.c +libvips/iofuncs/semaphore.c +libvips/iofuncs/sinkscreen.c +libvips/iofuncs/window.c +libvips/iofuncs/sinkmemory.c +libvips/iofuncs/header.c +libvips/iofuncs/type.c +libvips/iofuncs/image.c +libvips/iofuncs/region.c +libvips/iofuncs/sink.c libvips/iofuncs/error.c +libvips/iofuncs/util.c +libvips/iofuncs/buf.c +libvips/iofuncs/base64.c +libvips/iofuncs/generate.c +libvips/iofuncs/mapfile.c +libvips/iofuncs/rect.c +libvips/iofuncs/init.c +libvips/iofuncs/object.c libvips/iofuncs/threadpool.c -libvips/morphology/im_profile.c -libvips/morphology/morphology.c -libvips/morphology/im_label_regions.c -libvips/morphology/morph_dispatch.c -libvips/morphology/im_zerox.c +libvips/iofuncs/memory.c +libvips/iofuncs/cache.c libvips/morphology/im_cntlines.c -libvips/morphology/im_rank.c +libvips/morphology/im_profile.c +libvips/morphology/morph_dispatch.c libvips/morphology/im_rank_image.c -libvips/mosaicing/mosaicing_dispatch.c -libvips/mosaicing/im_lrmerge.c -libvips/mosaicing/im_remosaic.c -libvips/mosaicing/im_tbmosaic.c -libvips/mosaicing/im_chkpair.c -libvips/mosaicing/im_tbcalcon.c -libvips/mosaicing/global_balance.c -libvips/mosaicing/im_tbmerge.c -libvips/mosaicing/im_maxpos_subpel.c -libvips/mosaicing/im_improve.c -libvips/mosaicing/im_avgdxdy.c -libvips/mosaicing/im_align_bands.c -libvips/mosaicing/im_lrcalcon.c -libvips/mosaicing/im_initialize.c -libvips/mosaicing/match.c +libvips/morphology/morphology.c +libvips/morphology/im_zerox.c +libvips/morphology/im_label_regions.c +libvips/morphology/im_rank.c libvips/mosaicing/mosaic1.c libvips/mosaicing/im_clinear.c +libvips/mosaicing/match.c +libvips/mosaicing/mosaicing_dispatch.c +libvips/mosaicing/im_improve.c +libvips/mosaicing/im_tbmosaic.c +libvips/mosaicing/im_tbmerge.c +libvips/mosaicing/global_balance.c +libvips/mosaicing/im_align_bands.c +libvips/mosaicing/im_lrmerge.c +libvips/mosaicing/im_initialize.c +libvips/mosaicing/im_avgdxdy.c +libvips/mosaicing/im_maxpos_subpel.c libvips/mosaicing/im_lrmosaic.c -libvips/other/im_grey.c +libvips/mosaicing/im_lrcalcon.c +libvips/mosaicing/im_chkpair.c +libvips/mosaicing/im_remosaic.c +libvips/mosaicing/im_tbcalcon.c libvips/other/other_dispatch.c libvips/other/im_benchmark.c -libvips/other/im_zone.c libvips/other/im_sines.c -libvips/other/im_eye.c libvips/other/im_make_xy.c -libvips/resample/im_affine.c -libvips/resample/transform.c +libvips/other/im_zone.c +libvips/other/im_eye.c +libvips/other/im_grey.c libvips/resample/im_shrink.c libvips/resample/resample_dispatch.c -libvips/resample/interpolate.c +libvips/resample/im_affine.c libvips/resample/im_rightshift_size.c +libvips/resample/transform.c +libvips/resample/interpolate.c libvips/video/video_dispatch.c libvips/video/im_video_test.c libvips/video/im_video_v4l1.c @@ -264,92 +264,91 @@ libvipsCC/VError.cc libvipsCC/VImage.cc libvipsCC/vipsc++.cc libvipsCC/VMask.cc -libvips/arithmetic/unary.h +libvips/cimg/dummy2.cc libvips/arithmetic/binary.h libvips/arithmetic/unaryconst.h libvips/arithmetic/statistic.h libvips/arithmetic/arithmetic.h -libvipsCC/include/vips/VDisplay.h +libvips/arithmetic/unary.h libvipsCC/include/vips/VImage.h libvipsCC/include/vips/vipscpp.h +libvipsCC/include/vips/VDisplay.h libvipsCC/include/vips/VError.h -libvipsCC/include/vips/VMask.h libvipsCC/include/vips/vipsc++.h +libvipsCC/include/vips/VMask.h libvips/cimg/CImg.h -libvips/conversion/bandary.h libvips/conversion/conversion.h -libvips/foreign/vipspng.h -libvips/foreign/openexr2vips.h -libvips/foreign/tiff.h -libvips/foreign/jpeg.h -libvips/foreign/radiance.h -libvips/foreign/fits.h -libvips/foreign/analyze2vips.h -libvips/foreign/csv.h -libvips/foreign/ppm.h -libvips/foreign/matlab.h +libvips/conversion/bandary.h libvips/foreign/dbh.h -libvips/foreign/magick.h +libvips/foreign/matlab.h +libvips/foreign/jpeg.h +libvips/foreign/analyze2vips.h +libvips/foreign/vipspng.h +libvips/foreign/ppm.h +libvips/foreign/csv.h +libvips/foreign/openexr2vips.h libvips/foreign/openslide2vips.h -libvips/include/vips/type.h -libvips/include/vips/operation.h -libvips/include/vips/deprecated.h -libvips/include/vips/image.h +libvips/foreign/radiance.h +libvips/foreign/magick.h +libvips/foreign/tiff.h +libvips/foreign/fits.h libvips/include/vips/mosaicing.h -libvips/include/vips/freq_filt.h -libvips/include/vips/buf.h -libvips/include/vips/threadpool.h -libvips/include/vips/header.h -libvips/include/vips/inlines.h -libvips/include/vips/generate.h -libvips/include/vips/cimg_funcs.h -libvips/include/vips/object.h -libvips/include/vips/other.h -libvips/include/vips/util.h -libvips/include/vips/inplace.h -libvips/include/vips/version.h -libvips/include/vips/private.h -libvips/include/vips/conversion.h -libvips/include/vips/almostdeprecated.h -libvips/include/vips/resample.h -libvips/include/vips/dispatch.h -libvips/include/vips/rect.h libvips/include/vips/semaphore.h -libvips/include/vips/disp.h -libvips/include/vips/colour.h -libvips/include/vips/enumtypes.h -libvips/include/vips/vector.h -libvips/include/vips/intl.h -libvips/include/vips/region.h -libvips/include/vips/morphology.h -libvips/include/vips/format.h -libvips/include/vips/foreign.h -libvips/include/vips/internal.h -libvips/include/vips/interpolate.h -libvips/include/vips/memory.h -libvips/include/vips/transform.h -libvips/include/vips/error.h -libvips/include/vips/basic.h -libvips/include/vips/convolution.h -libvips/include/vips/mask.h +libvips/include/vips/freq_filt.h +libvips/include/vips/cimg_funcs.h +libvips/include/vips/operation.h libvips/include/vips/vips.h +libvips/include/vips/memory.h +libvips/include/vips/buf.h +libvips/include/vips/dispatch.h libvips/include/vips/vips7compat.h -libvips/include/vips/debug.h -libvips/include/vips/histograms_lut.h -libvips/include/vips/thread.h +libvips/include/vips/conversion.h +libvips/include/vips/basic.h +libvips/include/vips/inplace.h libvips/include/vips/relational.h -libvips/include/vips/video.h +libvips/include/vips/mask.h +libvips/include/vips/rect.h +libvips/include/vips/generate.h libvips/include/vips/arithmetic.h +libvips/include/vips/version.h +libvips/include/vips/util.h +libvips/include/vips/colour.h +libvips/include/vips/threadpool.h +libvips/include/vips/vector.h +libvips/include/vips/morphology.h +libvips/include/vips/error.h +libvips/include/vips/transform.h +libvips/include/vips/region.h +libvips/include/vips/header.h +libvips/include/vips/image.h +libvips/include/vips/intl.h +libvips/include/vips/video.h +libvips/include/vips/enumtypes.h +libvips/include/vips/thread.h +libvips/include/vips/convolution.h +libvips/include/vips/debug.h +libvips/include/vips/interpolate.h +libvips/include/vips/private.h +libvips/include/vips/format.h +libvips/include/vips/object.h +libvips/include/vips/inlines.h +libvips/include/vips/histograms_lut.h +libvips/include/vips/other.h +libvips/include/vips/foreign.h +libvips/include/vips/resample.h +libvips/include/vips/internal.h +libvips/include/vips/disp.h +libvips/include/vips/type.h libvips/inplace/draw.h libvips/iofuncs/sink.h libvips/iofuncs/base64.h +libvips/mosaicing/global_balance.h libvips/mosaicing/mosaic.h libvips/mosaicing/merge.h -libvips/mosaicing/global_balance.h libvips/resample/templates.h libvips/video/im_video_v4l1.h libvips/cimg/cimg.cpp -libvips/resample/bicubic.cpp -libvips/resample/nohalo.cpp libvips/resample/vsqbs.cpp +libvips/resample/nohalo.cpp libvips/resample/lbb.cpp +libvips/resample/bicubic.cpp diff --git a/po/vips7.pot b/po/vips7.pot index 17b5abd7..c3b6e0e4 100644 --- a/po/vips7.pot +++ b/po/vips7.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2012-03-02 20:40+0000\n" +"POT-Creation-Date: 2012-04-17 11:25+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,36 +19,48 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: ../libvips/arithmetic/abs.c:215 -msgid "absolute value of an image" +#: ../libvips/arithmetic/linear.c:249 +msgid "calculate (a * in + b)" msgstr "" -#: ../libvips/arithmetic/statistic.c:147 -msgid "VIPS statistic operations" +#: ../libvips/arithmetic/linear.c:257 +msgid "a" msgstr "" -#: ../libvips/arithmetic/statistic.c:151 ../libvips/arithmetic/unary.c:87 -#: ../libvips/conversion/bandmean.c:197 ../libvips/conversion/cast.c:474 -#: ../libvips/conversion/tilecache.c:422 ../libvips/conversion/extract.c:194 -#: ../libvips/conversion/extract.c:353 ../libvips/conversion/embed.c:516 -#: ../libvips/conversion/rot.c:355 ../libvips/conversion/flip.c:240 -#: ../libvips/conversion/copy.c:318 ../libvips/conversion/recomb.c:200 -#: ../libvips/conversion/replicate.c:196 ../libvips/conversion/cache.c:106 -#: ../libvips/conversion/bandjoin.c:171 ../libvips/foreign/foreign.c:1379 -msgid "Input" +#: ../libvips/arithmetic/linear.c:258 +msgid "Multiply by this" msgstr "" -#: ../libvips/arithmetic/statistic.c:152 ../libvips/conversion/cast.c:475 -#: ../libvips/conversion/tilecache.c:423 ../libvips/conversion/extract.c:195 -#: ../libvips/conversion/extract.c:354 ../libvips/conversion/embed.c:517 -#: ../libvips/conversion/rot.c:356 ../libvips/conversion/flip.c:241 -#: ../libvips/conversion/copy.c:319 ../libvips/conversion/replicate.c:197 -#: ../libvips/conversion/cache.c:107 -msgid "Input image" +#: ../libvips/arithmetic/linear.c:264 +msgid "b" msgstr "" -#: ../libvips/arithmetic/im_point_bilinear.c:74 -msgid "coords outside image" +#: ../libvips/arithmetic/linear.c:265 +msgid "Add this" +msgstr "" + +#: ../libvips/arithmetic/avg.c:210 ../libvips/arithmetic/stats.c:415 +#: ../libvips/arithmetic/deviate.c:211 +msgid "find image average" +msgstr "" + +#: ../libvips/arithmetic/avg.c:218 ../libvips/arithmetic/measure.c:202 +#: ../libvips/arithmetic/stats.c:423 ../libvips/arithmetic/deviate.c:219 +#: ../libvips/arithmetic/arithmetic.c:382 ../libvips/arithmetic/min.c:325 +#: ../libvips/arithmetic/max.c:324 ../libvips/conversion/conversion.c:89 +#: ../libvips/foreign/foreign.c:897 +msgid "Output" +msgstr "" + +#: ../libvips/arithmetic/avg.c:219 ../libvips/arithmetic/deviate.c:220 +#: ../libvips/arithmetic/min.c:326 ../libvips/arithmetic/max.c:325 +msgid "Output value" +msgstr "" + +#. Name +#: ../libvips/arithmetic/divide.c:228 +#: ../libvips/arithmetic/arith_dispatch.c:546 +msgid "divide two images" msgstr "" #. Name @@ -91,12 +103,6 @@ msgstr "" msgid "[x,y,z]^pel of image" msgstr "" -#. Name -#: ../libvips/arithmetic/arith_dispatch.c:546 -#: ../libvips/arithmetic/divide.c:225 -msgid "divide two images" -msgstr "" - #. Name #: ../libvips/arithmetic/arith_dispatch.c:565 msgid "photographic negative" @@ -270,167 +276,6 @@ msgstr "" msgid "phase of cross power spectrum of two complex images" msgstr "" -#: ../libvips/arithmetic/linear.c:249 -msgid "calculate (a * in + b)" -msgstr "" - -#: ../libvips/arithmetic/linear.c:257 -msgid "a" -msgstr "" - -#: ../libvips/arithmetic/linear.c:258 -msgid "Multiply by this" -msgstr "" - -#: ../libvips/arithmetic/linear.c:264 -msgid "b" -msgstr "" - -#: ../libvips/arithmetic/linear.c:265 -msgid "Add this" -msgstr "" - -#: ../libvips/arithmetic/remainder.c:178 -msgid "remainder after integer division of two images" -msgstr "" - -#: ../libvips/arithmetic/remainder.c:327 -msgid "remainder after integer division of an image and a constant" -msgstr "" - -#: ../libvips/arithmetic/im_maxpos_vec.c:121 -#: ../libvips/arithmetic/im_maxpos_vec.c:186 -msgid "scalar images only" -msgstr "" - -#: ../libvips/arithmetic/im_maxpos_vec.c:126 -#: ../libvips/arithmetic/im_maxpos_vec.c:191 -msgid "single band images only" -msgstr "" - -#: ../libvips/arithmetic/im_maxpos_vec.c:131 -#: ../libvips/arithmetic/im_maxpos_vec.c:196 -msgid "uncoded images only" -msgstr "" - -#: ../libvips/arithmetic/im_maxpos_vec.c:136 -#: ../libvips/arithmetic/im_maxpos_vec.c:201 -msgid "invalid argument" -msgstr "" - -#: ../libvips/arithmetic/min.c:317 -msgid "find image minimum" -msgstr "" - -#: ../libvips/arithmetic/min.c:325 ../libvips/arithmetic/arithmetic.c:382 -#: ../libvips/arithmetic/stats.c:423 ../libvips/arithmetic/measure.c:202 -#: ../libvips/arithmetic/max.c:324 ../libvips/arithmetic/avg.c:218 -#: ../libvips/arithmetic/deviate.c:219 ../libvips/conversion/conversion.c:89 -#: ../libvips/foreign/foreign.c:897 -msgid "Output" -msgstr "" - -#: ../libvips/arithmetic/min.c:326 ../libvips/arithmetic/max.c:325 -#: ../libvips/arithmetic/avg.c:219 ../libvips/arithmetic/deviate.c:220 -msgid "Output value" -msgstr "" - -#: ../libvips/arithmetic/min.c:332 ../libvips/arithmetic/max.c:331 -#: ../libvips/conversion/embed.c:522 -msgid "x" -msgstr "" - -#: ../libvips/arithmetic/min.c:333 -msgid "Horizontal position of minimum" -msgstr "" - -#: ../libvips/arithmetic/min.c:339 ../libvips/arithmetic/max.c:338 -#: ../libvips/conversion/embed.c:529 -msgid "y" -msgstr "" - -#: ../libvips/arithmetic/min.c:340 -msgid "Vertical position of minimum" -msgstr "" - -#: ../libvips/arithmetic/boolean.c:209 -msgid "a boolean operation on a pair of images" -msgstr "" - -#: ../libvips/arithmetic/boolean.c:217 ../libvips/arithmetic/boolean.c:519 -#: ../libvips/arithmetic/math2.c:204 ../libvips/arithmetic/math2.c:401 -#: ../libvips/arithmetic/math.c:205 ../libvips/arithmetic/relational.c:227 -#: ../libvips/arithmetic/relational.c:560 ../libvips/arithmetic/complex.c:222 -#: ../libvips/arithmetic/complex.c:476 -msgid "Operation" -msgstr "" - -#: ../libvips/arithmetic/boolean.c:218 ../libvips/arithmetic/boolean.c:520 -msgid "boolean to perform" -msgstr "" - -#: ../libvips/arithmetic/boolean.c:511 -msgid "boolean operations against a constant" -msgstr "" - -#: ../libvips/arithmetic/arithmetic.c:164 -#, c-format -msgid "not one band or %d bands" -msgstr "" - -#: ../libvips/arithmetic/arithmetic.c:168 -#: ../libvips/histograms_lut/im_identity.c:80 -#: ../libvips/histograms_lut/im_identity.c:143 -msgid "bad bands" -msgstr "" - -#: ../libvips/arithmetic/arithmetic.c:324 ../libvips/conversion/bandary.c:131 -msgid "too many input images" -msgstr "" - -#: ../libvips/arithmetic/arithmetic.c:378 -msgid "arithmetic operations" -msgstr "" - -#: ../libvips/arithmetic/arithmetic.c:383 -#: ../libvips/conversion/conversion.c:90 ../libvips/foreign/foreign.c:898 -msgid "Output image" -msgstr "" - -#: ../libvips/arithmetic/stats.c:415 ../libvips/arithmetic/avg.c:210 -#: ../libvips/arithmetic/deviate.c:211 -msgid "find image average" -msgstr "" - -#: ../libvips/arithmetic/stats.c:424 ../libvips/arithmetic/measure.c:203 -msgid "Output array of statistics" -msgstr "" - -#: ../libvips/arithmetic/math2.c:196 -msgid "pow( left, right)" -msgstr "" - -#: ../libvips/arithmetic/math2.c:205 ../libvips/arithmetic/math2.c:402 -#: ../libvips/arithmetic/math.c:206 -msgid "math to perform" -msgstr "" - -#: ../libvips/arithmetic/math2.c:393 -msgid "pow( @in, @c )" -msgstr "" - -#: ../libvips/arithmetic/round.c:160 -msgid "perform a round function on an image" -msgstr "" - -#: ../libvips/arithmetic/round.c:168 -msgid "Round operation" -msgstr "" - -#: ../libvips/arithmetic/round.c:169 -msgid "rounding operation to perform" -msgstr "" - #: ../libvips/arithmetic/measure.c:163 #, c-format msgid "patch %d x %d, band %d: avg = %g, sdev = %g" @@ -448,6 +293,10 @@ msgstr "" msgid "Image to measure" msgstr "" +#: ../libvips/arithmetic/measure.c:203 ../libvips/arithmetic/stats.c:424 +msgid "Output array of statistics" +msgstr "" + #: ../libvips/arithmetic/measure.c:208 ../libvips/conversion/replicate.c:202 msgid "Across" msgstr "" @@ -482,8 +331,8 @@ msgid "Top edge of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:236 ../libvips/conversion/extract.c:214 -#: ../libvips/conversion/embed.c:536 ../libvips/conversion/copy.c:331 -#: ../libvips/conversion/black.c:128 ../libvips/foreign/rawload.c:122 +#: ../libvips/conversion/black.c:128 ../libvips/conversion/copy.c:331 +#: ../libvips/conversion/embed.c:536 ../libvips/foreign/rawload.c:122 #: ../libvips/iofuncs/image.c:845 msgid "Width" msgstr "" @@ -493,8 +342,8 @@ msgid "Width of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:243 ../libvips/conversion/extract.c:221 -#: ../libvips/conversion/embed.c:543 ../libvips/conversion/copy.c:338 -#: ../libvips/conversion/black.c:135 ../libvips/foreign/rawload.c:129 +#: ../libvips/conversion/black.c:135 ../libvips/conversion/copy.c:338 +#: ../libvips/conversion/embed.c:543 ../libvips/foreign/rawload.c:129 #: ../libvips/iofuncs/image.c:852 msgid "Height" msgstr "" @@ -503,21 +352,58 @@ msgstr "" msgid "Height of extract area" msgstr "" -#: ../libvips/arithmetic/math.c:197 -msgid "perform a math function on an image" +#: ../libvips/arithmetic/math2.c:196 +msgid "pow( left, right)" msgstr "" -#: ../libvips/arithmetic/relational.c:219 -msgid "a relational operation on a pair of images" +#: ../libvips/arithmetic/math2.c:204 ../libvips/arithmetic/math2.c:401 +#: ../libvips/arithmetic/complex.c:222 ../libvips/arithmetic/complex.c:476 +#: ../libvips/arithmetic/math.c:205 ../libvips/arithmetic/relational.c:227 +#: ../libvips/arithmetic/relational.c:560 ../libvips/arithmetic/boolean.c:217 +#: ../libvips/arithmetic/boolean.c:519 +msgid "Operation" msgstr "" -#: ../libvips/arithmetic/relational.c:228 -#: ../libvips/arithmetic/relational.c:561 -msgid "relational to perform" +#: ../libvips/arithmetic/math2.c:205 ../libvips/arithmetic/math2.c:402 +#: ../libvips/arithmetic/math.c:206 +msgid "math to perform" msgstr "" -#: ../libvips/arithmetic/relational.c:552 -msgid "relational operations against a constant" +#: ../libvips/arithmetic/math2.c:393 +msgid "pow( @in, @c )" +msgstr "" + +#: ../libvips/arithmetic/round.c:160 +msgid "perform a round function on an image" +msgstr "" + +#: ../libvips/arithmetic/round.c:168 +msgid "Round operation" +msgstr "" + +#: ../libvips/arithmetic/round.c:169 +msgid "rounding operation to perform" +msgstr "" + +#: ../libvips/arithmetic/unary.c:80 +msgid "unary operations" +msgstr "" + +#: ../libvips/arithmetic/unary.c:87 ../libvips/arithmetic/statistic.c:151 +#: ../libvips/conversion/flip.c:240 ../libvips/conversion/bandmean.c:197 +#: ../libvips/conversion/cast.c:476 ../libvips/conversion/extract.c:194 +#: ../libvips/conversion/extract.c:353 ../libvips/conversion/bandjoin.c:171 +#: ../libvips/conversion/copy.c:318 ../libvips/conversion/rot.c:355 +#: ../libvips/conversion/replicate.c:196 ../libvips/conversion/tilecache.c:422 +#: ../libvips/conversion/embed.c:516 ../libvips/conversion/cache.c:106 +#: ../libvips/conversion/recomb.c:200 ../libvips/conversion/sequential.c:153 +#: ../libvips/foreign/foreign.c:1379 +msgid "Input" +msgstr "" + +#: ../libvips/arithmetic/unary.c:88 ../libvips/conversion/bandmean.c:198 +#: ../libvips/conversion/recomb.c:201 +msgid "Input image argument" msgstr "" #: ../libvips/arithmetic/unaryconst.c:201 @@ -532,29 +418,54 @@ msgstr "" msgid "Array of constants" msgstr "" -#: ../libvips/arithmetic/unary.c:80 -msgid "unary operations" +#: ../libvips/arithmetic/arithmetic.c:164 +#, c-format +msgid "not one band or %d bands" msgstr "" -#: ../libvips/arithmetic/unary.c:88 ../libvips/conversion/bandmean.c:198 -#: ../libvips/conversion/recomb.c:201 -msgid "Input image argument" +#: ../libvips/arithmetic/arithmetic.c:168 +#: ../libvips/histograms_lut/im_identity.c:80 +#: ../libvips/histograms_lut/im_identity.c:143 +msgid "bad bands" msgstr "" -#: ../libvips/arithmetic/invert.c:152 -msgid "invert an image" +#: ../libvips/arithmetic/arithmetic.c:324 ../libvips/conversion/bandary.c:131 +msgid "too many input images" msgstr "" -#: ../libvips/arithmetic/max.c:316 -msgid "find image maximum" +#: ../libvips/arithmetic/arithmetic.c:378 +msgid "arithmetic operations" msgstr "" -#: ../libvips/arithmetic/max.c:332 -msgid "Horizontal position of maximum" +#: ../libvips/arithmetic/arithmetic.c:383 +#: ../libvips/conversion/conversion.c:90 ../libvips/foreign/foreign.c:898 +msgid "Output image" msgstr "" -#: ../libvips/arithmetic/max.c:339 -msgid "Vertical position of maximum" +#: ../libvips/arithmetic/min.c:317 +msgid "find image minimum" +msgstr "" + +#: ../libvips/arithmetic/min.c:332 ../libvips/arithmetic/max.c:331 +#: ../libvips/conversion/embed.c:522 +msgid "x" +msgstr "" + +#: ../libvips/arithmetic/min.c:333 +msgid "Horizontal position of minimum" +msgstr "" + +#: ../libvips/arithmetic/min.c:339 ../libvips/arithmetic/max.c:338 +#: ../libvips/conversion/embed.c:529 +msgid "y" +msgstr "" + +#: ../libvips/arithmetic/min.c:340 +msgid "Vertical position of minimum" +msgstr "" + +#: ../libvips/arithmetic/im_point_bilinear.c:74 +msgid "coords outside image" msgstr "" #: ../libvips/arithmetic/complex.c:215 @@ -573,6 +484,39 @@ msgstr "" msgid "form a complex image from two real images" msgstr "" +#: ../libvips/arithmetic/invert.c:152 +msgid "invert an image" +msgstr "" + +#: ../libvips/arithmetic/remainder.c:178 +msgid "remainder after integer division of two images" +msgstr "" + +#: ../libvips/arithmetic/remainder.c:327 +msgid "remainder after integer division of an image and a constant" +msgstr "" + +#: ../libvips/arithmetic/math.c:197 +msgid "perform a math function on an image" +msgstr "" + +#: ../libvips/arithmetic/abs.c:215 +msgid "absolute value of an image" +msgstr "" + +#: ../libvips/arithmetic/relational.c:219 +msgid "a relational operation on a pair of images" +msgstr "" + +#: ../libvips/arithmetic/relational.c:228 +#: ../libvips/arithmetic/relational.c:561 +msgid "relational to perform" +msgstr "" + +#: ../libvips/arithmetic/relational.c:552 +msgid "relational operations against a constant" +msgstr "" + #: ../libvips/arithmetic/binary.c:88 msgid "binary operations" msgstr "" @@ -593,6 +537,83 @@ msgstr "" msgid "unit vector of pixel" msgstr "" +#: ../libvips/arithmetic/im_maxpos_vec.c:121 +#: ../libvips/arithmetic/im_maxpos_vec.c:186 +msgid "scalar images only" +msgstr "" + +#: ../libvips/arithmetic/im_maxpos_vec.c:126 +#: ../libvips/arithmetic/im_maxpos_vec.c:191 +msgid "single band images only" +msgstr "" + +#: ../libvips/arithmetic/im_maxpos_vec.c:131 +#: ../libvips/arithmetic/im_maxpos_vec.c:196 +msgid "uncoded images only" +msgstr "" + +#: ../libvips/arithmetic/im_maxpos_vec.c:136 +#: ../libvips/arithmetic/im_maxpos_vec.c:201 +msgid "invalid argument" +msgstr "" + +#: ../libvips/arithmetic/statistic.c:147 +msgid "VIPS statistic operations" +msgstr "" + +#: ../libvips/arithmetic/statistic.c:152 ../libvips/conversion/flip.c:241 +#: ../libvips/conversion/cast.c:477 ../libvips/conversion/extract.c:195 +#: ../libvips/conversion/extract.c:354 ../libvips/conversion/copy.c:319 +#: ../libvips/conversion/rot.c:356 ../libvips/conversion/replicate.c:197 +#: ../libvips/conversion/tilecache.c:423 ../libvips/conversion/embed.c:517 +#: ../libvips/conversion/cache.c:107 ../libvips/conversion/sequential.c:154 +msgid "Input image" +msgstr "" + +#: ../libvips/arithmetic/boolean.c:209 +msgid "a boolean operation on a pair of images" +msgstr "" + +#: ../libvips/arithmetic/boolean.c:218 ../libvips/arithmetic/boolean.c:520 +msgid "boolean to perform" +msgstr "" + +#: ../libvips/arithmetic/boolean.c:511 +msgid "boolean operations against a constant" +msgstr "" + +#: ../libvips/arithmetic/max.c:316 +msgid "find image maximum" +msgstr "" + +#: ../libvips/arithmetic/max.c:332 +msgid "Horizontal position of maximum" +msgstr "" + +#: ../libvips/arithmetic/max.c:339 +msgid "Vertical position of maximum" +msgstr "" + +#: ../libvips/colour/im_XYZ2disp.c:139 +msgid "3-band uncoded float only" +msgstr "" + +#: ../libvips/colour/im_disp2XYZ.c:86 +msgid "input not 3-band uncoded char" +msgstr "" + +#: ../libvips/colour/disp.c:397 +msgid "out of range [0,255]" +msgstr "" + +#: ../libvips/colour/disp.c:423 +msgid "bad display type" +msgstr "" + +#: ../libvips/colour/disp.c:537 +msgid "display unknown" +msgstr "" + #: ../libvips/colour/im_rad2float.c:186 msgid "not a RAD image" msgstr "" @@ -704,26 +725,6 @@ msgstr "" msgid "lmcs library not linked to this VIPS" msgstr "" -#: ../libvips/colour/disp.c:397 -msgid "out of range [0,255]" -msgstr "" - -#: ../libvips/colour/disp.c:423 -msgid "bad display type" -msgstr "" - -#: ../libvips/colour/disp.c:537 -msgid "display unknown" -msgstr "" - -#: ../libvips/colour/im_disp2XYZ.c:86 -msgid "input not 3-band uncoded char" -msgstr "" - -#: ../libvips/colour/im_XYZ2disp.c:139 -msgid "3-band uncoded float only" -msgstr "" - #: ../libvips/colour/im_lab_morph.c:75 msgid "bad greyscale mask size" msgstr "" @@ -733,66 +734,332 @@ msgstr "" msgid "bad greyscale mask value, row %d" msgstr "" -#: ../libvips/conversion/im_gaussnoise.c:124 -msgid "bad parameter" +#: ../libvips/conversion/flip.c:236 +msgid "flip an image" +msgstr "" + +#: ../libvips/conversion/flip.c:246 +msgid "Direction" +msgstr "" + +#: ../libvips/conversion/flip.c:247 +msgid "Direction to flip image" msgstr "" #: ../libvips/conversion/bandmean.c:191 msgid "band-wise average" msgstr "" -#: ../libvips/conversion/cast.c:123 +#: ../libvips/conversion/im_zoom.c:331 +msgid "zoom factors should be >= 0" +msgstr "" + +#. Make sure we won't get integer overflow. +#. +#: ../libvips/conversion/im_zoom.c:338 +msgid "zoom factors too large" +msgstr "" + +#: ../libvips/conversion/im_gaussnoise.c:124 +msgid "bad parameter" +msgstr "" + +#: ../libvips/conversion/bandary.c:127 +msgid "no input images" +msgstr "" + +#: ../libvips/conversion/bandary.c:173 +msgid "operations on image bands" +msgstr "" + +#: ../libvips/conversion/cast.c:125 #, c-format msgid "%d underflows and %d overflows detected" msgstr "" -#: ../libvips/conversion/cast.c:470 +#: ../libvips/conversion/cast.c:472 msgid "cast an image" msgstr "" -#: ../libvips/conversion/cast.c:480 ../libvips/conversion/copy.c:352 +#: ../libvips/conversion/cast.c:482 ../libvips/conversion/copy.c:352 #: ../libvips/iofuncs/image.c:866 msgid "Format" msgstr "" -#: ../libvips/conversion/cast.c:481 +#: ../libvips/conversion/cast.c:483 msgid "Format to cast to" msgstr "" -#: ../libvips/conversion/ifthenelse.c:395 -msgid "ifthenelse an image" +#: ../libvips/conversion/conversion.c:85 +msgid "conversion operations" msgstr "" -#: ../libvips/conversion/ifthenelse.c:399 -msgid "Condition" +#: ../libvips/conversion/im_subsample.c:202 +msgid "factors should both be >= 1" msgstr "" -#: ../libvips/conversion/ifthenelse.c:400 -msgid "Condition input image" +#: ../libvips/conversion/im_subsample.c:221 +#: ../libvips/resample/im_shrink.c:286 +msgid "image has shrunk to nothing" msgstr "" -#: ../libvips/conversion/ifthenelse.c:405 -msgid "Then image" +#: ../libvips/conversion/im_grid.c:164 +#: ../libvips/convolution/im_contrast_surface.c:140 +#: ../libvips/iofuncs/sinkscreen.c:1082 ../libvips/iofuncs/image.c:710 +#: ../libvips/morphology/im_rank.c:342 +msgid "bad parameters" msgstr "" -#: ../libvips/conversion/ifthenelse.c:406 -msgid "Source for TRUE pixels" +#: ../libvips/conversion/im_grid.c:169 +msgid "bad grid geometry" msgstr "" -#: ../libvips/conversion/ifthenelse.c:411 -msgid "Else image" +#: ../libvips/conversion/extract.c:147 +msgid "bad extract area" msgstr "" -#: ../libvips/conversion/ifthenelse.c:412 -msgid "Source for FALSE pixels" +#: ../libvips/conversion/extract.c:190 +msgid "extract an area from an image" msgstr "" -#: ../libvips/conversion/ifthenelse.c:417 -msgid "blend" +#: ../libvips/conversion/extract.c:318 +msgid "bad extract band" msgstr "" -#: ../libvips/conversion/ifthenelse.c:418 -msgid "Blend smoothly between then and else parts" +#: ../libvips/conversion/extract.c:347 +msgid "extract band from an image" +msgstr "" + +#: ../libvips/conversion/extract.c:359 +msgid "Band" +msgstr "" + +#: ../libvips/conversion/extract.c:360 +msgid "Band to extract" +msgstr "" + +#: ../libvips/conversion/extract.c:366 +msgid "n" +msgstr "" + +#: ../libvips/conversion/extract.c:367 +msgid "Number of bands to extract" +msgstr "" + +#: ../libvips/conversion/bandjoin.c:165 +msgid "bandwise join a set of images" +msgstr "" + +#: ../libvips/conversion/bandjoin.c:172 +msgid "Array of input images" +msgstr "" + +#: ../libvips/conversion/im_msb.c:134 ../libvips/conversion/im_msb.c:213 +msgid "unknown coding" +msgstr "" + +#: ../libvips/conversion/im_msb.c:169 +#: ../libvips/resample/im_rightshift_size.c:116 +msgid "bad arguments" +msgstr "" + +#: ../libvips/conversion/im_msb.c:183 ../libvips/conversion/im_msb.c:200 +msgid "image does not have that many bands" +msgstr "" + +#: ../libvips/conversion/black.c:124 +msgid "make a black image" +msgstr "" + +#: ../libvips/conversion/black.c:129 ../libvips/conversion/copy.c:332 +#: ../libvips/conversion/embed.c:537 ../libvips/foreign/rawload.c:123 +#: ../libvips/iofuncs/image.c:846 +msgid "Image width in pixels" +msgstr "" + +#: ../libvips/conversion/black.c:136 ../libvips/conversion/copy.c:339 +#: ../libvips/conversion/embed.c:544 ../libvips/foreign/rawload.c:130 +#: ../libvips/iofuncs/image.c:853 +msgid "Image height in pixels" +msgstr "" + +#: ../libvips/conversion/black.c:142 ../libvips/conversion/copy.c:345 +#: ../libvips/foreign/rawload.c:136 ../libvips/iofuncs/image.c:859 +msgid "Bands" +msgstr "" + +#: ../libvips/conversion/black.c:143 ../libvips/conversion/copy.c:346 +#: ../libvips/foreign/rawload.c:137 ../libvips/iofuncs/image.c:860 +msgid "Number of bands in image" +msgstr "" + +#: ../libvips/conversion/copy.c:314 +msgid "copy an image" +msgstr "" + +#: ../libvips/conversion/copy.c:324 +msgid "Swap" +msgstr "" + +#: ../libvips/conversion/copy.c:325 +msgid "Swap bytes in image between little and big-endian" +msgstr "" + +#: ../libvips/conversion/copy.c:353 ../libvips/iofuncs/image.c:867 +msgid "Pixel format in image" +msgstr "" + +#: ../libvips/conversion/copy.c:359 ../libvips/iofuncs/image.c:873 +msgid "Coding" +msgstr "" + +#: ../libvips/conversion/copy.c:360 ../libvips/iofuncs/image.c:874 +msgid "Pixel coding" +msgstr "" + +#: ../libvips/conversion/copy.c:366 ../libvips/iofuncs/image.c:880 +msgid "Interpretation" +msgstr "" + +#: ../libvips/conversion/copy.c:367 ../libvips/iofuncs/image.c:881 +msgid "Pixel interpretation" +msgstr "" + +#: ../libvips/conversion/copy.c:373 ../libvips/foreign/tiffsave.c:251 +#: ../libvips/iofuncs/image.c:887 +msgid "Xres" +msgstr "" + +#: ../libvips/conversion/copy.c:374 ../libvips/foreign/tiffsave.c:252 +#: ../libvips/iofuncs/image.c:888 +msgid "Horizontal resolution in pixels/mm" +msgstr "" + +#: ../libvips/conversion/copy.c:380 ../libvips/foreign/tiffsave.c:258 +#: ../libvips/iofuncs/image.c:894 +msgid "Yres" +msgstr "" + +#: ../libvips/conversion/copy.c:381 ../libvips/foreign/tiffsave.c:259 +#: ../libvips/iofuncs/image.c:895 +msgid "Vertical resolution in pixels/mm" +msgstr "" + +#: ../libvips/conversion/copy.c:387 ../libvips/iofuncs/image.c:901 +msgid "Xoffset" +msgstr "" + +#: ../libvips/conversion/copy.c:388 ../libvips/iofuncs/image.c:902 +msgid "Horizontal offset of origin" +msgstr "" + +#: ../libvips/conversion/copy.c:394 ../libvips/iofuncs/image.c:908 +msgid "Yoffset" +msgstr "" + +#: ../libvips/conversion/copy.c:395 ../libvips/iofuncs/image.c:909 +msgid "Vertical offset of origin" +msgstr "" + +#: ../libvips/conversion/rot.c:351 +msgid "rotate an image" +msgstr "" + +#: ../libvips/conversion/rot.c:361 +msgid "Angle" +msgstr "" + +#: ../libvips/conversion/rot.c:362 +msgid "Angle to rotate image" +msgstr "" + +#: ../libvips/conversion/replicate.c:192 +msgid "replicate an image" +msgstr "" + +#: ../libvips/conversion/replicate.c:203 +msgid "Repeat this many times horizontally" +msgstr "" + +#: ../libvips/conversion/replicate.c:210 +msgid "Repeat this many times vertically" +msgstr "" + +#: ../libvips/conversion/join.c:210 +msgid "join a pair of images" +msgstr "" + +#: ../libvips/conversion/join.c:214 +msgid "in1" +msgstr "" + +#: ../libvips/conversion/join.c:215 +msgid "First input image" +msgstr "" + +#: ../libvips/conversion/join.c:220 +msgid "in2" +msgstr "" + +#: ../libvips/conversion/join.c:221 +msgid "Second input image" +msgstr "" + +#: ../libvips/conversion/join.c:226 +msgid "direction" +msgstr "" + +#: ../libvips/conversion/join.c:227 +msgid "Join left-right or up-down" +msgstr "" + +#: ../libvips/conversion/join.c:233 ../libvips/conversion/insert.c:379 +msgid "Expand" +msgstr "" + +#: ../libvips/conversion/join.c:234 ../libvips/conversion/insert.c:380 +msgid "Expand output to hold all of both inputs" +msgstr "" + +#: ../libvips/conversion/join.c:240 +msgid "Shim" +msgstr "" + +#: ../libvips/conversion/join.c:241 +msgid "Pixels between images" +msgstr "" + +#: ../libvips/conversion/join.c:247 ../libvips/conversion/insert.c:386 +msgid "Background" +msgstr "" + +#: ../libvips/conversion/join.c:248 ../libvips/conversion/insert.c:387 +msgid "Colour for new pixels" +msgstr "" + +#: ../libvips/conversion/join.c:254 +msgid "Align" +msgstr "" + +#: ../libvips/conversion/join.c:255 +msgid "Align on the low, centre or high coordinate edge" +msgstr "" + +#: ../libvips/conversion/im_text.c:132 +msgid "no text to render" +msgstr "" + +#: ../libvips/conversion/im_text.c:219 +msgid "invalid markup in text" +msgstr "" + +#: ../libvips/conversion/im_text.c:252 +msgid "pangoft2 support disabled" +msgstr "" + +#: ../libvips/conversion/conver_dispatch.c:918 +#: ../libvips/inplace/inplace_dispatch.c:171 +msgid "vectors not same length" msgstr "" #: ../libvips/conversion/insert.c:349 @@ -831,43 +1098,27 @@ msgstr "" msgid "Top edge of sub in main" msgstr "" -#: ../libvips/conversion/insert.c:379 ../libvips/conversion/join.c:233 -msgid "Expand" -msgstr "" - -#: ../libvips/conversion/insert.c:380 ../libvips/conversion/join.c:234 -msgid "Expand output to hold all of both inputs" -msgstr "" - -#: ../libvips/conversion/insert.c:386 ../libvips/conversion/join.c:247 -msgid "Background" -msgstr "" - -#: ../libvips/conversion/insert.c:387 ../libvips/conversion/join.c:248 -msgid "Colour for new pixels" -msgstr "" - #: ../libvips/conversion/tilecache.c:418 ../libvips/conversion/cache.c:102 msgid "cache an image" msgstr "" #: ../libvips/conversion/tilecache.c:428 ../libvips/conversion/cache.c:112 -#: ../libvips/foreign/tiffsave.c:213 +#: ../libvips/foreign/tiffsave.c:215 msgid "Tile width" msgstr "" #: ../libvips/conversion/tilecache.c:429 ../libvips/conversion/cache.c:113 -#: ../libvips/foreign/tiffsave.c:214 +#: ../libvips/foreign/tiffsave.c:216 msgid "Tile width in pixels" msgstr "" #: ../libvips/conversion/tilecache.c:435 ../libvips/conversion/cache.c:119 -#: ../libvips/foreign/tiffsave.c:220 +#: ../libvips/foreign/tiffsave.c:222 msgid "Tile height" msgstr "" #: ../libvips/conversion/tilecache.c:436 ../libvips/conversion/cache.c:120 -#: ../libvips/foreign/tiffsave.c:221 +#: ../libvips/foreign/tiffsave.c:223 msgid "Tile height in pixels" msgstr "" @@ -887,66 +1138,12 @@ msgstr "" msgid "Expected access pattern" msgstr "" -#: ../libvips/conversion/im_text.c:132 -msgid "no text to render" +#: ../libvips/conversion/im_system_image.c:76 +#, c-format +msgid "command failed: \"%s\"" msgstr "" -#: ../libvips/conversion/im_text.c:219 -msgid "invalid markup in text" -msgstr "" - -#: ../libvips/conversion/im_text.c:252 -msgid "pangoft2 support disabled" -msgstr "" - -#: ../libvips/conversion/im_zoom.c:331 -msgid "zoom factors should be >= 0" -msgstr "" - -#. Make sure we won't get integer overflow. -#. -#: ../libvips/conversion/im_zoom.c:338 -msgid "zoom factors too large" -msgstr "" - -#: ../libvips/conversion/conver_dispatch.c:918 -#: ../libvips/inplace/inplace_dispatch.c:171 -msgid "vectors not same length" -msgstr "" - -#: ../libvips/conversion/extract.c:147 -msgid "bad extract area" -msgstr "" - -#: ../libvips/conversion/extract.c:190 -msgid "extract an area from an image" -msgstr "" - -#: ../libvips/conversion/extract.c:318 -msgid "bad extract band" -msgstr "" - -#: ../libvips/conversion/extract.c:347 -msgid "extract band from an image" -msgstr "" - -#: ../libvips/conversion/extract.c:359 -msgid "Band" -msgstr "" - -#: ../libvips/conversion/extract.c:360 -msgid "Band to extract" -msgstr "" - -#: ../libvips/conversion/extract.c:366 -msgid "n" -msgstr "" - -#: ../libvips/conversion/extract.c:367 -msgid "Number of bands to extract" -msgstr "" - -#: ../libvips/conversion/embed.c:430 ../libvips/iofuncs/image.c:1769 +#: ../libvips/conversion/embed.c:430 ../libvips/iofuncs/image.c:1777 msgid "bad dimensions" msgstr "" @@ -962,18 +1159,6 @@ msgstr "" msgid "Top edge of input in output" msgstr "" -#: ../libvips/conversion/embed.c:537 ../libvips/conversion/copy.c:332 -#: ../libvips/conversion/black.c:129 ../libvips/foreign/rawload.c:123 -#: ../libvips/iofuncs/image.c:846 -msgid "Image width in pixels" -msgstr "" - -#: ../libvips/conversion/embed.c:544 ../libvips/conversion/copy.c:339 -#: ../libvips/conversion/black.c:136 ../libvips/foreign/rawload.c:130 -#: ../libvips/iofuncs/image.c:853 -msgid "Image height in pixels" -msgstr "" - #: ../libvips/conversion/embed.c:550 msgid "Extend" msgstr "" @@ -982,173 +1167,40 @@ msgstr "" msgid "How to generate the extra pixels" msgstr "" -#: ../libvips/conversion/im_grid.c:164 -#: ../libvips/convolution/im_contrast_surface.c:140 -#: ../libvips/iofuncs/image.c:710 ../libvips/iofuncs/sinkscreen.c:1082 -#: ../libvips/morphology/im_rank.c:342 -msgid "bad parameters" +#: ../libvips/conversion/ifthenelse.c:395 +msgid "ifthenelse an image" msgstr "" -#: ../libvips/conversion/im_grid.c:169 -msgid "bad grid geometry" +#: ../libvips/conversion/ifthenelse.c:399 +msgid "Condition" msgstr "" -#: ../libvips/conversion/join.c:210 -msgid "join a pair of images" +#: ../libvips/conversion/ifthenelse.c:400 +msgid "Condition input image" msgstr "" -#: ../libvips/conversion/join.c:214 -msgid "in1" +#: ../libvips/conversion/ifthenelse.c:405 +msgid "Then image" msgstr "" -#: ../libvips/conversion/join.c:215 -msgid "First input image" +#: ../libvips/conversion/ifthenelse.c:406 +msgid "Source for TRUE pixels" msgstr "" -#: ../libvips/conversion/join.c:220 -msgid "in2" +#: ../libvips/conversion/ifthenelse.c:411 +msgid "Else image" msgstr "" -#: ../libvips/conversion/join.c:221 -msgid "Second input image" +#: ../libvips/conversion/ifthenelse.c:412 +msgid "Source for FALSE pixels" msgstr "" -#: ../libvips/conversion/join.c:226 -msgid "direction" +#: ../libvips/conversion/ifthenelse.c:417 +msgid "blend" msgstr "" -#: ../libvips/conversion/join.c:227 -msgid "Join left-right or up-down" -msgstr "" - -#: ../libvips/conversion/join.c:240 -msgid "Shim" -msgstr "" - -#: ../libvips/conversion/join.c:241 -msgid "Pixels between images" -msgstr "" - -#: ../libvips/conversion/join.c:254 -msgid "Align" -msgstr "" - -#: ../libvips/conversion/join.c:255 -msgid "Align on the low, centre or high coordinate edge" -msgstr "" - -#: ../libvips/conversion/rot.c:351 -msgid "rotate an image" -msgstr "" - -#: ../libvips/conversion/rot.c:361 -msgid "Angle" -msgstr "" - -#: ../libvips/conversion/rot.c:362 -msgid "Angle to rotate image" -msgstr "" - -#: ../libvips/conversion/flip.c:236 -msgid "flip an image" -msgstr "" - -#: ../libvips/conversion/flip.c:246 -msgid "Direction" -msgstr "" - -#: ../libvips/conversion/flip.c:247 -msgid "Direction to flip image" -msgstr "" - -#: ../libvips/conversion/copy.c:314 -msgid "copy an image" -msgstr "" - -#: ../libvips/conversion/copy.c:324 -msgid "Swap" -msgstr "" - -#: ../libvips/conversion/copy.c:325 -msgid "Swap bytes in image between little and big-endian" -msgstr "" - -#: ../libvips/conversion/copy.c:345 ../libvips/conversion/black.c:142 -#: ../libvips/foreign/rawload.c:136 ../libvips/iofuncs/image.c:859 -msgid "Bands" -msgstr "" - -#: ../libvips/conversion/copy.c:346 ../libvips/conversion/black.c:143 -#: ../libvips/foreign/rawload.c:137 ../libvips/iofuncs/image.c:860 -msgid "Number of bands in image" -msgstr "" - -#: ../libvips/conversion/copy.c:353 ../libvips/iofuncs/image.c:867 -msgid "Pixel format in image" -msgstr "" - -#: ../libvips/conversion/copy.c:359 ../libvips/iofuncs/image.c:873 -msgid "Coding" -msgstr "" - -#: ../libvips/conversion/copy.c:360 ../libvips/iofuncs/image.c:874 -msgid "Pixel coding" -msgstr "" - -#: ../libvips/conversion/copy.c:366 ../libvips/iofuncs/image.c:880 -msgid "Interpretation" -msgstr "" - -#: ../libvips/conversion/copy.c:367 ../libvips/iofuncs/image.c:881 -msgid "Pixel interpretation" -msgstr "" - -#: ../libvips/conversion/copy.c:373 ../libvips/foreign/tiffsave.c:249 -#: ../libvips/iofuncs/image.c:887 -msgid "Xres" -msgstr "" - -#: ../libvips/conversion/copy.c:374 ../libvips/foreign/tiffsave.c:250 -#: ../libvips/iofuncs/image.c:888 -msgid "Horizontal resolution in pixels/mm" -msgstr "" - -#: ../libvips/conversion/copy.c:380 ../libvips/foreign/tiffsave.c:256 -#: ../libvips/iofuncs/image.c:894 -msgid "Yres" -msgstr "" - -#: ../libvips/conversion/copy.c:381 ../libvips/foreign/tiffsave.c:257 -#: ../libvips/iofuncs/image.c:895 -msgid "Vertical resolution in pixels/mm" -msgstr "" - -#: ../libvips/conversion/copy.c:387 ../libvips/iofuncs/image.c:901 -msgid "Xoffset" -msgstr "" - -#: ../libvips/conversion/copy.c:388 ../libvips/iofuncs/image.c:902 -msgid "Horizontal offset of origin" -msgstr "" - -#: ../libvips/conversion/copy.c:394 ../libvips/iofuncs/image.c:908 -msgid "Yoffset" -msgstr "" - -#: ../libvips/conversion/copy.c:395 ../libvips/iofuncs/image.c:909 -msgid "Vertical offset of origin" -msgstr "" - -#: ../libvips/conversion/bandary.c:127 -msgid "no input images" -msgstr "" - -#: ../libvips/conversion/bandary.c:173 -msgid "operations on image bands" -msgstr "" - -#: ../libvips/conversion/conversion.c:85 -msgid "conversion operations" +#: ../libvips/conversion/ifthenelse.c:418 +msgid "Blend smoothly between then and else parts" msgstr "" #: ../libvips/conversion/recomb.c:160 @@ -1167,74 +1219,14 @@ msgstr "" msgid "matrix of coefficients" msgstr "" -#: ../libvips/conversion/replicate.c:192 -msgid "replicate an image" -msgstr "" - -#: ../libvips/conversion/replicate.c:203 -msgid "Repeat this many times horizontally" -msgstr "" - -#: ../libvips/conversion/replicate.c:210 -msgid "Repeat this many times vertically" -msgstr "" - -#: ../libvips/conversion/black.c:124 -msgid "make a black image" -msgstr "" - -#: ../libvips/conversion/im_msb.c:134 ../libvips/conversion/im_msb.c:213 -msgid "unknown coding" -msgstr "" - -#: ../libvips/conversion/im_msb.c:169 -#: ../libvips/resample/im_rightshift_size.c:116 -msgid "bad arguments" -msgstr "" - -#: ../libvips/conversion/im_msb.c:183 ../libvips/conversion/im_msb.c:200 -msgid "image does not have that many bands" -msgstr "" - -#: ../libvips/conversion/im_system_image.c:76 +#: ../libvips/conversion/sequential.c:86 #, c-format -msgid "command failed: \"%s\"" +msgid "" +"non-sequential read --- at position %d in file, but position %d requested" msgstr "" -#: ../libvips/conversion/im_subsample.c:202 -msgid "factors should both be >= 1" -msgstr "" - -#: ../libvips/conversion/im_subsample.c:221 -#: ../libvips/resample/im_shrink.c:286 -msgid "image has shrunk to nothing" -msgstr "" - -#: ../libvips/conversion/bandjoin.c:165 -msgid "bandwise join a set of images" -msgstr "" - -#: ../libvips/conversion/bandjoin.c:172 -msgid "Array of input images" -msgstr "" - -#: ../libvips/convolution/im_contrast_surface.c:147 -msgid "parameters would result in zero size output image" -msgstr "" - -#: ../libvips/convolution/im_aconvsep.c:130 -#: ../libvips/convolution/im_aconv.c:223 ../libvips/convolution/im_aconv.c:229 -#: ../libvips/convolution/im_aconv.c:750 -msgid "mask too complex" -msgstr "" - -#: ../libvips/convolution/im_aconvsep.c:798 -#: ../libvips/convolution/im_conv.c:1038 -#: ../libvips/convolution/im_conv_f.c:340 -#: ../libvips/convolution/im_aconv.c:980 -#: ../libvips/convolution/im_aconv.c:1201 -#: ../libvips/morphology/morphology.c:721 -msgid "image too small for mask" +#: ../libvips/conversion/sequential.c:149 +msgid "check sequential access" msgstr "" #: ../libvips/convolution/im_conv.c:215 @@ -1242,6 +1234,15 @@ msgstr "" msgid "%d overflows and %d underflows detected" msgstr "" +#: ../libvips/convolution/im_conv.c:1038 +#: ../libvips/convolution/im_conv_f.c:340 +#: ../libvips/convolution/im_aconvsep.c:798 +#: ../libvips/convolution/im_aconv.c:980 +#: ../libvips/convolution/im_aconv.c:1201 +#: ../libvips/morphology/morphology.c:721 +msgid "image too small for mask" +msgstr "" + #: ../libvips/convolution/im_conv.c:1125 #: ../libvips/convolution/im_conv_f.c:403 msgid "expect 1xN or Nx1 input mask" @@ -1252,86 +1253,72 @@ msgstr "" msgid "ref not smaller than or equal to in" msgstr "" +#: ../libvips/convolution/im_contrast_surface.c:147 +msgid "parameters would result in zero size output image" +msgstr "" + +#: ../libvips/convolution/im_aconvsep.c:130 +#: ../libvips/convolution/im_aconv.c:223 ../libvips/convolution/im_aconv.c:229 +#: ../libvips/convolution/im_aconv.c:750 +msgid "mask too complex" +msgstr "" + #: ../libvips/convolution/im_sharpen.c:325 #: ../libvips/histograms_lut/im_stdif.c:196 msgid "parameters out of range" msgstr "" -#: ../libvips/foreign/rawload.c:107 -msgid "load raw data from a file" +#: ../libvips/foreign/rawsave.c:159 +msgid "save image to raw file" msgstr "" -#: ../libvips/foreign/rawload.c:115 ../libvips/foreign/fitssave.c:128 -#: ../libvips/foreign/ppmload.c:126 ../libvips/foreign/radload.c:126 -#: ../libvips/foreign/openslideload.c:176 ../libvips/foreign/tiffload.c:142 -#: ../libvips/foreign/fitsload.c:116 ../libvips/foreign/vipssave.c:125 -#: ../libvips/foreign/radsave.c:119 ../libvips/foreign/openexrload.c:137 -#: ../libvips/foreign/analyzeload.c:126 ../libvips/foreign/pngload.c:136 -#: ../libvips/foreign/tiffsave.c:169 ../libvips/foreign/vipsload.c:133 -#: ../libvips/foreign/magickload.c:146 ../libvips/foreign/matload.c:128 -#: ../libvips/foreign/jpegload.c:245 ../libvips/foreign/jpegsave.c:193 -#: ../libvips/foreign/rawsave.c:166 ../libvips/foreign/ppmsave.c:118 -#: ../libvips/foreign/csvsave.c:121 ../libvips/foreign/csvload.c:132 +#: ../libvips/foreign/rawsave.c:166 ../libvips/foreign/radload.c:126 +#: ../libvips/foreign/tiffload.c:142 ../libvips/foreign/ppmsave.c:118 +#: ../libvips/foreign/vipsload.c:133 ../libvips/foreign/pngload.c:136 +#: ../libvips/foreign/openexrload.c:137 ../libvips/foreign/tiffsave.c:171 +#: ../libvips/foreign/analyzeload.c:126 ../libvips/foreign/jpegsave.c:193 +#: ../libvips/foreign/fitsload.c:116 ../libvips/foreign/ppmload.c:126 +#: ../libvips/foreign/csvload.c:132 ../libvips/foreign/magickload.c:146 +#: ../libvips/foreign/openslideload.c:178 ../libvips/foreign/csvsave.c:121 +#: ../libvips/foreign/jpegload.c:245 ../libvips/foreign/rawload.c:115 +#: ../libvips/foreign/matload.c:128 ../libvips/foreign/fitssave.c:128 +#: ../libvips/foreign/radsave.c:119 ../libvips/foreign/vipssave.c:125 #: ../libvips/foreign/pngsave.c:166 ../libvips/iofuncs/image.c:915 msgid "Filename" msgstr "" -#: ../libvips/foreign/rawload.c:116 ../libvips/foreign/ppmload.c:127 -#: ../libvips/foreign/radload.c:127 ../libvips/foreign/openslideload.c:177 -#: ../libvips/foreign/tiffload.c:143 ../libvips/foreign/fitsload.c:117 -#: ../libvips/foreign/openexrload.c:138 ../libvips/foreign/analyzeload.c:127 -#: ../libvips/foreign/pngload.c:137 ../libvips/foreign/vipsload.c:134 -#: ../libvips/foreign/magickload.c:147 ../libvips/foreign/matload.c:129 -#: ../libvips/foreign/jpegload.c:246 ../libvips/foreign/csvload.c:133 -msgid "Filename to load from" -msgstr "" - -#: ../libvips/foreign/rawload.c:143 ../libvips/iofuncs/image.c:943 -msgid "Size of header" -msgstr "" - -#: ../libvips/foreign/rawload.c:144 ../libvips/iofuncs/image.c:944 -msgid "Offset in bytes from start of file" -msgstr "" - -#: ../libvips/foreign/fitssave.c:119 -msgid "save image to fits file" -msgstr "" - -#: ../libvips/foreign/fitssave.c:129 ../libvips/foreign/vipssave.c:126 -#: ../libvips/foreign/radsave.c:120 ../libvips/foreign/tiffsave.c:170 -#: ../libvips/foreign/jpegsave.c:194 ../libvips/foreign/rawsave.c:167 -#: ../libvips/foreign/ppmsave.c:119 ../libvips/foreign/csvsave.c:122 +#: ../libvips/foreign/rawsave.c:167 ../libvips/foreign/ppmsave.c:119 +#: ../libvips/foreign/tiffsave.c:172 ../libvips/foreign/jpegsave.c:194 +#: ../libvips/foreign/csvsave.c:122 ../libvips/foreign/fitssave.c:129 +#: ../libvips/foreign/radsave.c:120 ../libvips/foreign/vipssave.c:126 #: ../libvips/foreign/pngsave.c:167 msgid "Filename to save to" msgstr "" -#: ../libvips/foreign/ppmload.c:114 -msgid "load ppm from file" +#: ../libvips/foreign/rawsave.c:266 +msgid "write raw image to file descriptor" +msgstr "" + +#: ../libvips/foreign/rawsave.c:273 +msgid "File descriptor" +msgstr "" + +#: ../libvips/foreign/rawsave.c:274 +msgid "File descriptor to write to" msgstr "" #: ../libvips/foreign/radload.c:114 msgid "load a Radiance image from a file" msgstr "" -#: ../libvips/foreign/openslideload.c:159 -msgid "load file with OpenSlide" -msgstr "" - -#: ../libvips/foreign/openslideload.c:183 -msgid "Level" -msgstr "" - -#: ../libvips/foreign/openslideload.c:184 -msgid "Load this level from the file" -msgstr "" - -#: ../libvips/foreign/openslideload.c:190 -msgid "Associated" -msgstr "" - -#: ../libvips/foreign/openslideload.c:191 -msgid "Load this associated image" +#: ../libvips/foreign/radload.c:127 ../libvips/foreign/tiffload.c:143 +#: ../libvips/foreign/vipsload.c:134 ../libvips/foreign/pngload.c:137 +#: ../libvips/foreign/openexrload.c:138 ../libvips/foreign/analyzeload.c:127 +#: ../libvips/foreign/fitsload.c:117 ../libvips/foreign/ppmload.c:127 +#: ../libvips/foreign/csvload.c:133 ../libvips/foreign/magickload.c:147 +#: ../libvips/foreign/openslideload.c:179 ../libvips/foreign/jpegload.c:246 +#: ../libvips/foreign/rawload.c:116 ../libvips/foreign/matload.c:129 +msgid "Filename to load from" msgstr "" #: ../libvips/foreign/tiffload.c:130 @@ -1346,140 +1333,326 @@ msgstr "" msgid "Load this page from the file" msgstr "" -#: ../libvips/foreign/fitsload.c:107 -msgid "load a FITS image" -msgstr "" - -#: ../libvips/foreign/vipssave.c:114 -msgid "save image to vips file" -msgstr "" - -#: ../libvips/foreign/radsave.c:108 -msgid "save image to Radiance file" -msgstr "" - -#: ../libvips/foreign/openexrload.c:125 -msgid "load an OpenEXR image" -msgstr "" - -#: ../libvips/foreign/analyzeload.c:114 -msgid "load an Analyze6 image" -msgstr "" - -#: ../libvips/foreign/pngload.c:124 -msgid "load png from file" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:159 -msgid "save image to tiff file" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:176 ../libvips/foreign/pngsave.c:103 -msgid "Compression" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:177 -msgid "Compression for this file" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:184 ../libvips/foreign/jpegsave.c:124 -msgid "Q" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:185 ../libvips/foreign/jpegsave.c:125 -msgid "Q factor" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:191 -msgid "predictor" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:192 -msgid "Compression prediction" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:199 ../libvips/foreign/jpegsave.c:131 -msgid "profile" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:200 ../libvips/foreign/jpegsave.c:132 -msgid "ICC profile to embed" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:206 -msgid "Tile" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:207 -msgid "Write a tiled tiff" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:227 -msgid "Pyramid" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:228 -msgid "Write a pyramidal tiff" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:234 -msgid "Squash" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:235 -msgid "Squash images down to 1 bit" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:241 ../libvips/foreign/tiffsave.c:242 -msgid "Resolution unit" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:263 -msgid "Bigtiff" -msgstr "" - -#: ../libvips/foreign/tiffsave.c:264 -msgid "Write a bigtiff image" -msgstr "" - -#: ../libvips/foreign/csv.c:183 +#: ../libvips/foreign/magick2vips.c:215 #, c-format -msgid "error parsing number, line %d, column %d" +msgid "unsupported image type %d" msgstr "" -#: ../libvips/foreign/csv.c:237 -msgid "end of file while skipping start" -msgstr "" - -#: ../libvips/foreign/csv.c:246 ../libvips/iofuncs/util.c:1072 -#: ../libvips/iofuncs/util.c:1078 -msgid "unable to seek" -msgstr "" - -#: ../libvips/foreign/csv.c:257 -msgid "empty line" -msgstr "" - -#: ../libvips/foreign/csv.c:301 +#: ../libvips/foreign/magick2vips.c:275 #, c-format -msgid "unexpected EOF, line %d col %d" +msgid "unsupported bit depth %d" msgstr "" -#: ../libvips/foreign/csv.c:307 +#: ../libvips/foreign/magick2vips.c:307 #, c-format -msgid "unexpected EOL, line %d col %d" +msgid "unsupported colorspace %d" +msgstr "" + +#: ../libvips/foreign/magick2vips.c:622 +msgid "unable to read pixels" +msgstr "" + +#: ../libvips/foreign/magick2vips.c:658 +#, c-format +msgid "" +"unable to read file \"%s\"\n" +"libMagick error: %s %s" +msgstr "" + +#: ../libvips/foreign/magick2vips.c:692 +#, c-format +msgid "" +"unable to ping file \"%s\"\n" +"libMagick error: %s %s" +msgstr "" + +#: ../libvips/foreign/magick2vips.c:703 +msgid "bad image size" +msgstr "" + +#: ../libvips/foreign/ppmsave.c:109 +msgid "save image to ppm file" +msgstr "" + +#: ../libvips/foreign/ppmsave.c:125 +msgid "ASCII" +msgstr "" + +#: ../libvips/foreign/ppmsave.c:126 +msgid "save as ascii" msgstr "" #: ../libvips/foreign/vipsload.c:121 msgid "load vips from file" msgstr "" +#: ../libvips/foreign/pngload.c:124 +msgid "load png from file" +msgstr "" + +#: ../libvips/foreign/analyze2vips.c:308 +msgid "header file size incorrect" +msgstr "" + +#: ../libvips/foreign/analyze2vips.c:353 +msgid "header size incorrect" +msgstr "" + +#: ../libvips/foreign/analyze2vips.c:371 +#, c-format +msgid "%d-dimensional images not supported" +msgstr "" + +#: ../libvips/foreign/analyze2vips.c:424 +#, c-format +msgid "datatype %d not supported" +msgstr "" + +#: ../libvips/foreign/jpeg2vips.c:167 +#, c-format +msgid "read gave %ld warnings" +msgstr "" + +#: ../libvips/foreign/jpeg2vips.c:489 +msgid "error reading resolution" +msgstr "" + +#: ../libvips/foreign/jpeg2vips.c:510 +msgid "unknown EXIF resolution unit" +msgstr "" + +#: ../libvips/foreign/jpeg2vips.c:718 +msgid "unknown JFIF resolution unit" +msgstr "" + +#: ../libvips/foreign/radiance.c:885 +msgid "error reading radiance header" +msgstr "" + +#: ../libvips/foreign/radiance.c:959 ../libvips/foreign/tiff2vips.c:1331 +msgid "read error" +msgstr "" + +#: ../libvips/foreign/openexrload.c:125 +msgid "load an OpenEXR image" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:161 +msgid "save image to tiff file" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:178 ../libvips/foreign/pngsave.c:103 +msgid "Compression" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:179 +msgid "Compression for this file" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:186 ../libvips/foreign/jpegsave.c:124 +msgid "Q" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:187 ../libvips/foreign/jpegsave.c:125 +msgid "Q factor" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:193 +msgid "predictor" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:194 +msgid "Compression prediction" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:201 ../libvips/foreign/jpegsave.c:131 +msgid "profile" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:202 ../libvips/foreign/jpegsave.c:132 +msgid "ICC profile to embed" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:208 +msgid "Tile" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:209 +msgid "Write a tiled tiff" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:229 +msgid "Pyramid" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:230 +msgid "Write a pyramidal tiff" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:236 +msgid "Squash" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:237 +msgid "Squash images down to 1 bit" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:243 ../libvips/foreign/tiffsave.c:244 +msgid "Resolution unit" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:265 +msgid "Bigtiff" +msgstr "" + +#: ../libvips/foreign/tiffsave.c:266 +msgid "Write a bigtiff image" +msgstr "" + +#: ../libvips/foreign/analyzeload.c:114 +msgid "load an Analyze6 image" +msgstr "" + +#: ../libvips/foreign/jpegsave.c:118 +msgid "save jpeg" +msgstr "" + +#: ../libvips/foreign/jpegsave.c:187 +msgid "save image to jpeg file" +msgstr "" + +#: ../libvips/foreign/jpegsave.c:256 +msgid "save image to jpeg buffer" +msgstr "" + +#: ../libvips/foreign/jpegsave.c:260 ../libvips/foreign/jpegload.c:315 +#: ../libvips/foreign/pngsave.c:228 +msgid "Buffer" +msgstr "" + +#: ../libvips/foreign/jpegsave.c:261 ../libvips/foreign/pngsave.c:229 +msgid "Buffer to save to" +msgstr "" + +#: ../libvips/foreign/jpegsave.c:303 +msgid "error writing output" +msgstr "" + +#: ../libvips/foreign/jpegsave.c:319 +msgid "save image to jpeg mime" +msgstr "" + +#: ../libvips/foreign/vips2jpeg.c:132 +#, c-format +msgid "%s" +msgstr "" + +#: ../libvips/foreign/vips2jpeg.c:363 +msgid "error setting JPEG resolution" +msgstr "" + +#: ../libvips/foreign/vips2jpeg.c:510 +msgid "error saving EXIF" +msgstr "" + +#: ../libvips/foreign/ppm.c:109 +msgid "bad int" +msgstr "" + +#: ../libvips/foreign/ppm.c:121 +msgid "bad float" +msgstr "" + +#: ../libvips/foreign/ppm.c:172 +msgid "bad magic number" +msgstr "" + +#: ../libvips/foreign/ppm.c:222 +msgid "not whitespace before start of binary data" +msgstr "" + +#: ../libvips/foreign/ppm.c:599 ../libvips/foreign/ppm.c:611 +msgid "write error ... disc full?" +msgstr "" + +#: ../libvips/foreign/ppm.c:716 +msgid "binary >8 bit images must be float" +msgstr "" + +#: ../libvips/foreign/fitsload.c:107 +msgid "load a FITS image" +msgstr "" + +#: ../libvips/foreign/ppmload.c:114 +msgid "load ppm from file" +msgstr "" + +#: ../libvips/foreign/csvload.c:121 +msgid "load csv from file" +msgstr "" + +#: ../libvips/foreign/csvload.c:139 +msgid "Skip" +msgstr "" + +#: ../libvips/foreign/csvload.c:140 +msgid "Skip this many lines at the start of the file" +msgstr "" + +#: ../libvips/foreign/csvload.c:146 +msgid "Lines" +msgstr "" + +#: ../libvips/foreign/csvload.c:147 +msgid "Read this many lines from the file" +msgstr "" + +#: ../libvips/foreign/csvload.c:153 +msgid "Whitespace" +msgstr "" + +#: ../libvips/foreign/csvload.c:154 +msgid "Set of whitespace characters" +msgstr "" + +#: ../libvips/foreign/csvload.c:160 ../libvips/foreign/csvsave.c:128 +msgid "Separator" +msgstr "" + +#: ../libvips/foreign/csvload.c:161 +msgid "Set of separator characters" +msgstr "" + #: ../libvips/foreign/magickload.c:131 msgid "load file with ImageMagick" msgstr "" -#: ../libvips/foreign/matload.c:116 -msgid "load mat from file" +#: ../libvips/foreign/openslideload.c:161 +msgid "load file with OpenSlide" +msgstr "" + +#: ../libvips/foreign/openslideload.c:185 +msgid "Level" +msgstr "" + +#: ../libvips/foreign/openslideload.c:186 +msgid "Load this level from the file" +msgstr "" + +#: ../libvips/foreign/openslideload.c:192 +msgid "Associated" +msgstr "" + +#: ../libvips/foreign/openslideload.c:193 +msgid "Load this associated image" +msgstr "" + +#: ../libvips/foreign/csvsave.c:112 +msgid "save image to csv file" +msgstr "" + +#: ../libvips/foreign/csvsave.c:129 +msgid "Separator characters" msgstr "" #: ../libvips/foreign/jpegload.c:118 @@ -1515,62 +1688,25 @@ msgstr "" msgid "load jpeg from buffer" msgstr "" -#: ../libvips/foreign/jpegload.c:315 ../libvips/foreign/jpegsave.c:260 -#: ../libvips/foreign/pngsave.c:228 -msgid "Buffer" -msgstr "" - #: ../libvips/foreign/jpegload.c:316 msgid "Buffer to load from" msgstr "" -#: ../libvips/foreign/openslide2vips.c:134 -msgid "invalid associated image name" +#: ../libvips/foreign/rawload.c:107 +msgid "load raw data from a file" msgstr "" -#: ../libvips/foreign/openslide2vips.c:159 -msgid "failure opening slide" +#: ../libvips/foreign/rawload.c:143 ../libvips/iofuncs/image.c:943 +msgid "Size of header" msgstr "" -#: ../libvips/foreign/openslide2vips.c:166 -msgid "invalid slide level" +#: ../libvips/foreign/rawload.c:144 ../libvips/iofuncs/image.c:944 +msgid "Offset in bytes from start of file" msgstr "" -#: ../libvips/foreign/openslide2vips.c:202 +#: ../libvips/foreign/openexr2vips.c:115 #, c-format -msgid "getting dimensions: %s" -msgstr "" - -#: ../libvips/foreign/openslide2vips.c:209 -msgid "image dimensions overflow int" -msgstr "" - -#: ../libvips/foreign/openslide2vips.c:274 -#, c-format -msgid "reading region: %s" -msgstr "" - -#: ../libvips/foreign/openslide2vips.c:348 -#, c-format -msgid "reading associated image: %s" -msgstr "" - -#: ../libvips/foreign/analyze2vips.c:308 -msgid "header file size incorrect" -msgstr "" - -#: ../libvips/foreign/analyze2vips.c:353 -msgid "header size incorrect" -msgstr "" - -#: ../libvips/foreign/analyze2vips.c:371 -#, c-format -msgid "%d-dimensional images not supported" -msgstr "" - -#: ../libvips/foreign/analyze2vips.c:424 -#, c-format -msgid "datatype %d not supported" +msgid "EXR error: %s" msgstr "" #: ../libvips/foreign/tiff2vips.c:262 ../libvips/foreign/tiff2vips.c:285 @@ -1647,10 +1783,6 @@ msgstr "" msgid "unknown photometric interpretation %d" msgstr "" -#: ../libvips/foreign/tiff2vips.c:1331 ../libvips/foreign/radiance.c:959 -msgid "read error" -msgstr "" - #: ../libvips/foreign/tiff2vips.c:1444 #, c-format msgid "bad page number %d" @@ -1666,173 +1798,57 @@ msgstr "" msgid "TIFF file does not contain page %d" msgstr "" -#: ../libvips/foreign/jpegsave.c:118 -msgid "save jpeg" -msgstr "" - -#: ../libvips/foreign/jpegsave.c:187 -msgid "save image to jpeg file" -msgstr "" - -#: ../libvips/foreign/jpegsave.c:256 -msgid "save image to jpeg buffer" -msgstr "" - -#: ../libvips/foreign/jpegsave.c:261 ../libvips/foreign/pngsave.c:229 -msgid "Buffer to save to" -msgstr "" - -#: ../libvips/foreign/jpegsave.c:303 -msgid "error writing output" -msgstr "" - -#: ../libvips/foreign/jpegsave.c:319 -msgid "save image to jpeg mime" -msgstr "" - -#: ../libvips/foreign/rawsave.c:159 -msgid "save image to raw file" -msgstr "" - -#: ../libvips/foreign/rawsave.c:266 -msgid "write raw image to file descriptor" -msgstr "" - -#: ../libvips/foreign/rawsave.c:273 -msgid "File descriptor" -msgstr "" - -#: ../libvips/foreign/rawsave.c:274 -msgid "File descriptor to write to" -msgstr "" - -#: ../libvips/foreign/ppmsave.c:109 -msgid "save image to ppm file" -msgstr "" - -#: ../libvips/foreign/ppmsave.c:125 -msgid "ASCII" -msgstr "" - -#: ../libvips/foreign/ppmsave.c:126 -msgid "save as ascii" -msgstr "" - -#: ../libvips/foreign/vips2jpeg.c:132 +#: ../libvips/foreign/csv.c:183 #, c-format -msgid "%s" +msgid "error parsing number, line %d, column %d" msgstr "" -#: ../libvips/foreign/vips2jpeg.c:363 -msgid "error setting JPEG resolution" +#: ../libvips/foreign/csv.c:237 +msgid "end of file while skipping start" msgstr "" -#: ../libvips/foreign/vips2jpeg.c:510 -msgid "error saving EXIF" +#: ../libvips/foreign/csv.c:246 ../libvips/iofuncs/util.c:1072 +#: ../libvips/iofuncs/util.c:1078 +msgid "unable to seek" msgstr "" -#: ../libvips/foreign/openexr2vips.c:115 +#: ../libvips/foreign/csv.c:257 +msgid "empty line" +msgstr "" + +#: ../libvips/foreign/csv.c:301 #, c-format -msgid "EXR error: %s" +msgid "unexpected EOF, line %d col %d" msgstr "" -#: ../libvips/foreign/magick2vips.c:215 +#: ../libvips/foreign/csv.c:307 #, c-format -msgid "unsupported image type %d" +msgid "unexpected EOL, line %d col %d" msgstr "" -#: ../libvips/foreign/magick2vips.c:275 -#, c-format -msgid "unsupported bit depth %d" +#: ../libvips/foreign/matload.c:116 +msgid "load mat from file" msgstr "" -#: ../libvips/foreign/magick2vips.c:307 -#, c-format -msgid "unsupported colorspace %d" +#: ../libvips/foreign/fitssave.c:119 +msgid "save image to fits file" msgstr "" -#: ../libvips/foreign/magick2vips.c:622 -msgid "unable to read pixels" +#: ../libvips/foreign/radsave.c:108 +msgid "save image to Radiance file" msgstr "" -#: ../libvips/foreign/magick2vips.c:658 -#, c-format -msgid "" -"unable to read file \"%s\"\n" -"libMagick error: %s %s" +#: ../libvips/foreign/vipssave.c:114 +msgid "save image to vips file" msgstr "" -#: ../libvips/foreign/magick2vips.c:692 -#, c-format -msgid "" -"unable to ping file \"%s\"\n" -"libMagick error: %s %s" -msgstr "" - -#: ../libvips/foreign/magick2vips.c:703 -msgid "bad image size" -msgstr "" - -#: ../libvips/foreign/vipspng.c:230 -msgid "unsupported color type" -msgstr "" - -#: ../libvips/foreign/vipspng.c:570 -msgid "compress should be in [0,9]" -msgstr "" - -#: ../libvips/foreign/vipspng.c:650 -#, c-format -msgid "unable to write \"%s\"" -msgstr "" - -#: ../libvips/foreign/vipspng.c:749 -msgid "unable to write to buffer" -msgstr "" - -#: ../libvips/foreign/matlab.c:106 ../libvips/foreign/fits.c:178 +#: ../libvips/foreign/fits.c:178 ../libvips/foreign/matlab.c:106 #: ../libvips/iofuncs/vips.c:143 ../libvips/mosaicing/global_balance.c:1181 #: ../libvips/mosaicing/global_balance.c:1516 #, c-format msgid "unable to open \"%s\"" msgstr "" -#: ../libvips/foreign/matlab.c:114 -#, c-format -msgid "no matrix variables in \"%s\"" -msgstr "" - -#: ../libvips/foreign/matlab.c:175 -#, c-format -msgid "unsupported rank %d\n" -msgstr "" - -#: ../libvips/foreign/matlab.c:188 -#, c-format -msgid "unsupported class type %d\n" -msgstr "" - -#: ../libvips/foreign/matlab.c:236 -msgid "Mat_VarReadDataAll failed" -msgstr "" - -#: ../libvips/foreign/jpeg2vips.c:167 -#, c-format -msgid "read gave %ld warnings" -msgstr "" - -#: ../libvips/foreign/jpeg2vips.c:489 -msgid "error reading resolution" -msgstr "" - -#: ../libvips/foreign/jpeg2vips.c:510 -msgid "unknown EXIF resolution unit" -msgstr "" - -#: ../libvips/foreign/jpeg2vips.c:718 -msgid "unknown JFIF resolution unit" -msgstr "" - #: ../libvips/foreign/fits.c:240 msgid "dimensions above 3 must be size 1" msgstr "" @@ -1857,40 +1873,63 @@ msgstr "" msgid "unsupported BandFmt %d\n" msgstr "" -#: ../libvips/foreign/csvsave.c:112 -msgid "save image to csv file" +#: ../libvips/foreign/openslide2vips.c:140 +msgid "invalid associated image name" msgstr "" -#: ../libvips/foreign/csvsave.c:128 ../libvips/foreign/csvload.c:160 -msgid "Separator" +#: ../libvips/foreign/openslide2vips.c:156 +msgid "specify only one of level or associated image" msgstr "" -#: ../libvips/foreign/csvsave.c:129 -msgid "Separator characters" +#: ../libvips/foreign/openslide2vips.c:172 +msgid "failure opening slide" msgstr "" -#: ../libvips/foreign/ppm.c:109 -msgid "bad int" +#: ../libvips/foreign/openslide2vips.c:179 +msgid "invalid slide level" msgstr "" -#: ../libvips/foreign/ppm.c:121 -msgid "bad float" +#: ../libvips/foreign/openslide2vips.c:209 +#, c-format +msgid "getting dimensions: %s" msgstr "" -#: ../libvips/foreign/ppm.c:172 -msgid "bad magic number" +#: ../libvips/foreign/openslide2vips.c:216 +msgid "image dimensions overflow int" msgstr "" -#: ../libvips/foreign/ppm.c:222 -msgid "not whitespace before start of binary data" +#: ../libvips/foreign/openslide2vips.c:282 +#, c-format +msgid "reading region: %s" msgstr "" -#: ../libvips/foreign/ppm.c:599 ../libvips/foreign/ppm.c:611 -msgid "write error ... disc full?" +#: ../libvips/foreign/openslide2vips.c:379 +#, c-format +msgid "reading associated image: %s" msgstr "" -#: ../libvips/foreign/ppm.c:716 -msgid "binary >8 bit images must be float" +#: ../libvips/foreign/pngsave.c:95 +msgid "save png" +msgstr "" + +#: ../libvips/foreign/pngsave.c:104 +msgid "Compression factor" +msgstr "" + +#: ../libvips/foreign/pngsave.c:110 +msgid "Interlace" +msgstr "" + +#: ../libvips/foreign/pngsave.c:111 +msgid "Interlace image" +msgstr "" + +#: ../libvips/foreign/pngsave.c:162 +msgid "save image to png file" +msgstr "" + +#: ../libvips/foreign/pngsave.c:224 +msgid "save image to png buffer" msgstr "" #: ../libvips/foreign/vips2tiff.c:270 @@ -1934,66 +1973,6 @@ msgstr "" msgid "1 to 5 bands only" msgstr "" -#: ../libvips/foreign/radiance.c:885 -msgid "error reading radiance header" -msgstr "" - -#: ../libvips/foreign/csvload.c:121 -msgid "load csv from file" -msgstr "" - -#: ../libvips/foreign/csvload.c:139 -msgid "Skip" -msgstr "" - -#: ../libvips/foreign/csvload.c:140 -msgid "Skip this many lines at the start of the file" -msgstr "" - -#: ../libvips/foreign/csvload.c:146 -msgid "Lines" -msgstr "" - -#: ../libvips/foreign/csvload.c:147 -msgid "Read this many lines from the file" -msgstr "" - -#: ../libvips/foreign/csvload.c:153 -msgid "Whitespace" -msgstr "" - -#: ../libvips/foreign/csvload.c:154 -msgid "Set of whitespace characters" -msgstr "" - -#: ../libvips/foreign/csvload.c:161 -msgid "Set of separator characters" -msgstr "" - -#: ../libvips/foreign/pngsave.c:95 -msgid "save png" -msgstr "" - -#: ../libvips/foreign/pngsave.c:104 -msgid "Compression factor" -msgstr "" - -#: ../libvips/foreign/pngsave.c:110 -msgid "Interlace" -msgstr "" - -#: ../libvips/foreign/pngsave.c:111 -msgid "Interlace image" -msgstr "" - -#: ../libvips/foreign/pngsave.c:162 -msgid "save image to png file" -msgstr "" - -#: ../libvips/foreign/pngsave.c:224 -msgid "save image to png buffer" -msgstr "" - #: ../libvips/foreign/foreign.c:384 msgid "load and save image files" msgstr "" @@ -2053,6 +2032,46 @@ msgstr "" msgid "Image to save" msgstr "" +#: ../libvips/foreign/vipspng.c:245 +msgid "unsupported color type" +msgstr "" + +#: ../libvips/foreign/vipspng.c:621 +msgid "compress should be in [0,9]" +msgstr "" + +#: ../libvips/foreign/vipspng.c:714 +#, c-format +msgid "unable to write \"%s\"" +msgstr "" + +#: ../libvips/foreign/vipspng.c:813 +msgid "unable to write to buffer" +msgstr "" + +#: ../libvips/foreign/matlab.c:114 +#, c-format +msgid "no matrix variables in \"%s\"" +msgstr "" + +#: ../libvips/foreign/matlab.c:175 +#, c-format +msgid "unsupported rank %d\n" +msgstr "" + +#: ../libvips/foreign/matlab.c:188 +#, c-format +msgid "unsupported class type %d\n" +msgstr "" + +#: ../libvips/foreign/matlab.c:236 +msgid "Mat_VarReadDataAll failed" +msgstr "" + +#: ../libvips/freq_filt/im_fractsurf.c:72 +msgid "dimension should be in (2,3)" +msgstr "" + #: ../libvips/freq_filt/im_freq_mask.c:108 msgid "mask sizes power of 2 only" msgstr "" @@ -2061,6 +2080,16 @@ msgstr "" msgid "unimplemented mask type" msgstr "" +#: ../libvips/freq_filt/im_fwfft.c:125 ../libvips/freq_filt/im_fwfft.c:241 +#: ../libvips/freq_filt/im_invfftr.c:124 ../libvips/freq_filt/im_invfft.c:105 +msgid "unable to create transform plan" +msgstr "" + +#: ../libvips/freq_filt/im_fwfft.c:301 ../libvips/freq_filt/im_invfftr.c:145 +#: ../libvips/freq_filt/im_invfft.c:130 +msgid "vips configured without FFT support" +msgstr "" + #: ../libvips/freq_filt/fmaskcir.c:158 ../libvips/freq_filt/fmaskcir.c:303 #: ../libvips/freq_filt/fmaskcir.c:394 ../libvips/freq_filt/fmaskcir.c:476 #: ../libvips/freq_filt/fmaskcir.c:556 @@ -2099,18 +2128,21 @@ msgstr "" msgid "unimplemented mask" msgstr "" -#: ../libvips/freq_filt/im_fractsurf.c:72 -msgid "dimension should be in (2,3)" +#: ../libvips/histograms_lut/im_buildlut.c:120 +msgid "x value not an int" msgstr "" -#: ../libvips/freq_filt/im_invfft.c:105 ../libvips/freq_filt/im_invfftr.c:124 -#: ../libvips/freq_filt/im_fwfft.c:125 ../libvips/freq_filt/im_fwfft.c:241 -msgid "unable to create transform plan" +#: ../libvips/histograms_lut/im_buildlut.c:133 +msgid "x range too small" msgstr "" -#: ../libvips/freq_filt/im_invfft.c:130 ../libvips/freq_filt/im_invfftr.c:145 -#: ../libvips/freq_filt/im_fwfft.c:301 -msgid "vips configured without FFT support" +#: ../libvips/histograms_lut/im_buildlut.c:278 +msgid "bad input matrix size" +msgstr "" + +#: ../libvips/histograms_lut/im_histnD.c:227 +#, c-format +msgid " bins out of range [1,%d]" msgstr "" #: ../libvips/histograms_lut/im_stdif.c:186 @@ -2123,26 +2155,16 @@ msgstr "" msgid "window too small" msgstr "" -#: ../libvips/histograms_lut/im_histnD.c:227 -#, c-format -msgid " bins out of range [1,%d]" +#: ../libvips/histograms_lut/im_invertlut.c:132 +msgid "element out of range [0,1]" msgstr "" -#: ../libvips/histograms_lut/im_identity.c:139 ../libvips/other/im_grey.c:101 -#: ../libvips/other/im_make_xy.c:95 -msgid "bad size" +#: ../libvips/histograms_lut/im_invertlut.c:287 +msgid "bad input matrix" msgstr "" -#: ../libvips/histograms_lut/im_buildlut.c:120 -msgid "x value not an int" -msgstr "" - -#: ../libvips/histograms_lut/im_buildlut.c:133 -msgid "x range too small" -msgstr "" - -#: ../libvips/histograms_lut/im_buildlut.c:278 -msgid "bad input matrix size" +#: ../libvips/histograms_lut/im_invertlut.c:292 +msgid "bad lut_size" msgstr "" #: ../libvips/histograms_lut/tone.c:194 @@ -2177,16 +2199,9 @@ msgstr "" msgid "H not in range [-30,+30]" msgstr "" -#: ../libvips/histograms_lut/im_invertlut.c:132 -msgid "element out of range [0,1]" -msgstr "" - -#: ../libvips/histograms_lut/im_invertlut.c:287 -msgid "bad input matrix" -msgstr "" - -#: ../libvips/histograms_lut/im_invertlut.c:292 -msgid "bad lut_size" +#: ../libvips/histograms_lut/im_identity.c:139 +#: ../libvips/other/im_make_xy.c:95 ../libvips/other/im_grey.c:101 +msgid "bad size" msgstr "" #: ../libvips/histograms_lut/im_maplut.c:97 @@ -2206,31 +2221,52 @@ msgstr "" msgid "ink image not 1x1 pixels" msgstr "" -#: ../libvips/iofuncs/sink.c:105 +#: ../libvips/iofuncs/operation.c:97 +msgid "input" +msgstr "" + +#: ../libvips/iofuncs/operation.c:97 +msgid "output" +msgstr "" + +#: ../libvips/iofuncs/operation.c:246 +msgid "operations" +msgstr "" + +#: ../libvips/iofuncs/operation.c:273 +msgid "usage:" +msgstr "" + +#: ../libvips/iofuncs/operation.c:287 ../libvips/iofuncs/object.c:1248 +#: ../libvips/resample/interpolate.c:615 #, c-format -msgid "stop function failed for image \"%s\"" +msgid "class \"%s\" not found" msgstr "" -#: ../libvips/iofuncs/sink.c:142 +#: ../libvips/iofuncs/operation.c:699 #, c-format -msgid "start function failed for image \"%s\"" +msgid "unknown argument '%s'" msgstr "" -#: ../libvips/iofuncs/sink.c:175 -msgid "per-thread state for sink" +#: ../libvips/iofuncs/operation.c:810 +msgid "too few arguments" msgstr "" -#: ../libvips/iofuncs/memory.c:231 -msgid "vips_free: too many frees" +#: ../libvips/iofuncs/operation.c:931 +msgid "too many arguments" msgstr "" -#: ../libvips/iofuncs/memory.c:235 -msgid "vips_free: too much free" +#: ../libvips/iofuncs/sinkdisc.c:121 +msgid "per-thread state for sinkdisc" msgstr "" -#: ../libvips/iofuncs/memory.c:295 ../libvips/iofuncs/memory.c:298 -#, c-format -msgid "out of memory --- size == %dMB" +#: ../libvips/iofuncs/sinkdisc.c:236 ../libvips/iofuncs/sinkscreen.c:537 +#: ../libvips/iofuncs/threadpool.c:606 +msgid "unable to create thread" +msgstr "" + +#: ../libvips/iofuncs/sinkdisc.c:262 ../libvips/iofuncs/util.c:656 +msgid "write failed" msgstr "" #: ../libvips/iofuncs/vips.c:286 @@ -2288,128 +2324,31 @@ msgstr "" msgid "error reading XML: %s" msgstr "" -#: ../libvips/iofuncs/generate.c:343 ../libvips/iofuncs/header.c:611 +#: ../libvips/iofuncs/sinkscreen.c:185 +msgid "per-thread state for render" +msgstr "" + +#: ../libvips/iofuncs/sinkmemory.c:108 +msgid "per-thread state for sinkmemory" +msgstr "" + +#: ../libvips/iofuncs/header.c:210 +#, c-format +msgid "unknown band format %d" +msgstr "" + +#: ../libvips/iofuncs/header.c:611 ../libvips/iofuncs/generate.c:343 msgid "too many images" msgstr "" -#: ../libvips/iofuncs/generate.c:606 -msgid "demand hint not set" -msgstr "" - -#: ../libvips/iofuncs/generate.c:625 ../libvips/iofuncs/generate.c:650 -msgid "generate() called twice" -msgstr "" - -#: ../libvips/iofuncs/generate.c:682 ../libvips/iofuncs/image.c:1865 +#: ../libvips/iofuncs/header.c:781 #, c-format -msgid "unable to output to a %s image" +msgid "field \"%s\" not found" msgstr "" -#: ../libvips/iofuncs/region.c:212 +#: ../libvips/iofuncs/header.c:949 #, c-format -msgid "start function failed for image %s" -msgstr "" - -#: ../libvips/iofuncs/region.c:521 ../libvips/iofuncs/region.c:591 -#: ../libvips/iofuncs/region.c:738 ../libvips/iofuncs/region.c:1234 -msgid "valid clipped to nothing" -msgstr "" - -#: ../libvips/iofuncs/region.c:635 -msgid "bad image type" -msgstr "" - -#: ../libvips/iofuncs/region.c:680 -msgid "no pixel data on attached image" -msgstr "" - -#: ../libvips/iofuncs/region.c:686 -msgid "images do not match in pixel size" -msgstr "" - -#: ../libvips/iofuncs/region.c:719 ../libvips/iofuncs/region.c:1216 -msgid "dest too small" -msgstr "" - -#: ../libvips/iofuncs/region.c:806 -msgid "bad position" -msgstr "" - -#: ../libvips/iofuncs/region.c:1095 ../libvips/iofuncs/region.c:1287 -#, c-format -msgid "unable to input from a %s image" -msgstr "" - -#: ../libvips/iofuncs/region.c:1119 -msgid "incomplete header" -msgstr "" - -#: ../libvips/iofuncs/region.c:1190 -msgid "inappropriate region type" -msgstr "" - -#: ../libvips/iofuncs/init.c:366 -msgid "evaluate with N concurrent threads" -msgstr "" - -#: ../libvips/iofuncs/init.c:369 -msgid "set tile width to N (DEBUG)" -msgstr "" - -#: ../libvips/iofuncs/init.c:372 -msgid "set tile height to N (DEBUG)" -msgstr "" - -#: ../libvips/iofuncs/init.c:375 -msgid "set thinstrip height to N (DEBUG)" -msgstr "" - -#: ../libvips/iofuncs/init.c:378 -msgid "set fatstrip height to N (DEBUG)" -msgstr "" - -#: ../libvips/iofuncs/init.c:381 -msgid "show progress feedback" -msgstr "" - -#: ../libvips/iofuncs/init.c:384 -msgid "leak-check on exit" -msgstr "" - -#: ../libvips/iofuncs/init.c:387 -msgid "images larger than N are decompressed to disc" -msgstr "" - -#: ../libvips/iofuncs/init.c:390 -msgid "disable vectorised versions of operations" -msgstr "" - -#: ../libvips/iofuncs/init.c:393 -msgid "cache at most N operations" -msgstr "" - -#: ../libvips/iofuncs/init.c:396 -msgid "cache at most N bytes in memory" -msgstr "" - -#: ../libvips/iofuncs/init.c:399 -msgid "allow at most N open files" -msgstr "" - -#: ../libvips/iofuncs/init.c:402 -msgid "trace operation cache" -msgstr "" - -#: ../libvips/iofuncs/init.c:405 -msgid "dump operation cache on exit" -msgstr "" - -#: ../libvips/iofuncs/init.c:428 -msgid "VIPS Options" -msgstr "" - -#: ../libvips/iofuncs/init.c:428 -msgid "Show VIPS options" +msgid "field \"%s\" is of type %s, not %s" msgstr "" #: ../libvips/iofuncs/image.c:293 @@ -2507,307 +2446,97 @@ msgstr "" msgid "killed for image \"%s\"" msgstr "" -#: ../libvips/iofuncs/image.c:1807 +#: ../libvips/iofuncs/image.c:1815 msgid "bad image descriptor" msgstr "" -#: ../libvips/iofuncs/image.c:1909 +#: ../libvips/iofuncs/image.c:1873 ../libvips/iofuncs/generate.c:682 +#, c-format +msgid "unable to output to a %s image" +msgstr "" + +#: ../libvips/iofuncs/image.c:1917 #, c-format msgid "auto-rewind for %s failed" msgstr "" -#: ../libvips/iofuncs/image.c:1965 ../libvips/iofuncs/image.c:2160 -#: ../libvips/iofuncs/image.c:2177 +#: ../libvips/iofuncs/image.c:1973 ../libvips/iofuncs/image.c:2168 +#: ../libvips/iofuncs/image.c:2185 msgid "no image data" msgstr "" -#: ../libvips/iofuncs/image.c:2033 ../libvips/iofuncs/image.c:2200 +#: ../libvips/iofuncs/image.c:2041 ../libvips/iofuncs/image.c:2208 msgid "image not readable" msgstr "" -#: ../libvips/iofuncs/image.c:2054 ../libvips/iofuncs/image.c:2230 -#: ../libvips/iofuncs/image.c:2239 +#: ../libvips/iofuncs/image.c:2062 ../libvips/iofuncs/image.c:2238 +#: ../libvips/iofuncs/image.c:2247 msgid "image already written" msgstr "" -#: ../libvips/iofuncs/image.c:2078 ../libvips/iofuncs/image.c:2251 +#: ../libvips/iofuncs/image.c:2086 ../libvips/iofuncs/image.c:2259 msgid "image not writeable" msgstr "" -#: ../libvips/iofuncs/image.c:2124 +#: ../libvips/iofuncs/image.c:2132 msgid "bad file type" msgstr "" -#: ../libvips/iofuncs/sinkscreen.c:185 -msgid "per-thread state for render" -msgstr "" - -#: ../libvips/iofuncs/sinkscreen.c:537 ../libvips/iofuncs/sinkdisc.c:236 -#: ../libvips/iofuncs/threadpool.c:606 -msgid "unable to create thread" -msgstr "" - -#: ../libvips/iofuncs/mapfile.c:130 ../libvips/iofuncs/mapfile.c:297 -msgid "unable to CreateFileMapping" -msgstr "" - -#: ../libvips/iofuncs/mapfile.c:138 ../libvips/iofuncs/mapfile.c:309 -msgid "unable to MapViewOfFile" -msgstr "" - -#: ../libvips/iofuncs/mapfile.c:178 -msgid "unable to mmap" -msgstr "" - -#: ../libvips/iofuncs/mapfile.c:179 +#: ../libvips/iofuncs/region.c:212 #, c-format -msgid "" -"map failed (%s), running very low on system resources, expect a crash soon" +msgid "start function failed for image %s" msgstr "" -#: ../libvips/iofuncs/mapfile.c:196 ../libvips/iofuncs/mapfile.c:303 -msgid "unable to UnmapViewOfFile" +#: ../libvips/iofuncs/region.c:528 ../libvips/iofuncs/region.c:598 +#: ../libvips/iofuncs/region.c:745 ../libvips/iofuncs/region.c:1241 +msgid "valid clipped to nothing" msgstr "" -#: ../libvips/iofuncs/mapfile.c:202 -msgid "unable to munmap file" +#: ../libvips/iofuncs/region.c:642 +msgid "bad image type" msgstr "" -#: ../libvips/iofuncs/mapfile.c:224 -msgid "file is less than 64 bytes" +#: ../libvips/iofuncs/region.c:687 +msgid "no pixel data on attached image" msgstr "" -#: ../libvips/iofuncs/mapfile.c:229 ../libvips/iofuncs/mapfile.c:263 -msgid "unable to get file status" +#: ../libvips/iofuncs/region.c:693 +msgid "images do not match in pixel size" msgstr "" -#: ../libvips/iofuncs/mapfile.c:235 -msgid "not a regular file" +#: ../libvips/iofuncs/region.c:726 ../libvips/iofuncs/region.c:1223 +msgid "dest too small" msgstr "" -#: ../libvips/iofuncs/mapfile.c:269 -msgid "unable to read data" +#: ../libvips/iofuncs/region.c:813 +msgid "bad position" msgstr "" -#: ../libvips/iofuncs/mapfile.c:329 +#: ../libvips/iofuncs/region.c:1102 ../libvips/iofuncs/region.c:1294 #, c-format -msgid "unable to mmap: \"%s\" - %s" +msgid "unable to input from a %s image" msgstr "" -#: ../libvips/iofuncs/mapfile.c:339 +#: ../libvips/iofuncs/region.c:1126 +msgid "incomplete header" +msgstr "" + +#: ../libvips/iofuncs/region.c:1197 +msgid "inappropriate region type" +msgstr "" + +#: ../libvips/iofuncs/sink.c:105 #, c-format -msgid "unable to mmap \"%s\" to same address" +msgid "stop function failed for image \"%s\"" msgstr "" -#: ../libvips/iofuncs/base64.c:170 -msgid "too little data" -msgstr "" - -#. We shouldn't really be used for large amounts of data. -#. -#: ../libvips/iofuncs/base64.c:176 ../libvips/iofuncs/base64.c:241 -msgid "too much data" -msgstr "" - -#: ../libvips/iofuncs/object.c:148 +#: ../libvips/iofuncs/sink.c:142 #, c-format -msgid "parameter %s not set" +msgid "start function failed for image \"%s\"" msgstr "" -#: ../libvips/iofuncs/object.c:505 -#, c-format -msgid "no property named `%s'" -msgstr "" - -#: ../libvips/iofuncs/object.c:513 -#, c-format -msgid "no vips argument named `%s'" -msgstr "" - -#: ../libvips/iofuncs/object.c:520 -#, c-format -msgid "argument `%s' has no instance" -msgstr "" - -#: ../libvips/iofuncs/object.c:1248 ../libvips/iofuncs/operation.c:287 -#: ../libvips/resample/interpolate.c:615 -#, c-format -msgid "class \"%s\" not found" -msgstr "" - -#: ../libvips/iofuncs/object.c:1297 -msgid "base class" -msgstr "" - -#: ../libvips/iofuncs/object.c:1311 -msgid "Nickname" -msgstr "" - -#: ../libvips/iofuncs/object.c:1312 -msgid "Class nickname" -msgstr "" - -#: ../libvips/iofuncs/object.c:1318 -msgid "Description" -msgstr "" - -#: ../libvips/iofuncs/object.c:1319 -msgid "Class description" -msgstr "" - -#: ../libvips/iofuncs/object.c:1509 -#, c-format -msgid "enum '%s' has no member '%s'" -msgstr "" - -#: ../libvips/iofuncs/object.c:1769 -#, c-format -msgid "unable to set '%s'" -msgstr "" - -#: ../libvips/iofuncs/object.c:1777 -msgid "not , or ) after parameter" -msgstr "" - -#: ../libvips/iofuncs/object.c:1784 -msgid "extra tokens after ')'" -msgstr "" - -#. File length unit. -#. -#: ../libvips/iofuncs/buf.c:520 -msgid "bytes" -msgstr "" - -#. Kilo byte unit. -#. -#: ../libvips/iofuncs/buf.c:524 -msgid "KB" -msgstr "" - -#. Mega byte unit. -#. -#: ../libvips/iofuncs/buf.c:528 -msgid "MB" -msgstr "" - -#. Giga byte unit. -#. -#: ../libvips/iofuncs/buf.c:532 -msgid "GB" -msgstr "" - -#. Tera byte unit. -#. -#: ../libvips/iofuncs/buf.c:536 -msgid "TB" -msgstr "" - -#: ../libvips/iofuncs/util.c:639 -msgid "unable to get file stats" -msgstr "" - -#: ../libvips/iofuncs/util.c:656 ../libvips/iofuncs/sinkdisc.c:262 -msgid "write failed" -msgstr "" - -#: ../libvips/iofuncs/util.c:720 -#, c-format -msgid "unable to open file \"%s\" for reading" -msgstr "" - -#: ../libvips/iofuncs/util.c:742 -#, c-format -msgid "unable to open file \"%s\" for writing" -msgstr "" - -#: ../libvips/iofuncs/util.c:767 -#, c-format -msgid "\"%s\" too long" -msgstr "" - -#: ../libvips/iofuncs/util.c:784 -msgid "out of memory" -msgstr "" - -#: ../libvips/iofuncs/util.c:810 -#, c-format -msgid "error reading from file \"%s\"" -msgstr "" - -#: ../libvips/iofuncs/util.c:857 -#, c-format -msgid "write error (%zd out of %zd blocks written) ... disc full?" -msgstr "" - -#: ../libvips/iofuncs/util.c:1106 ../libvips/iofuncs/util.c:1113 -msgid "unable to truncate" -msgstr "" - -#: ../libvips/iofuncs/util.c:1297 -msgid "unexpected end of string" -msgstr "" - -#: ../libvips/iofuncs/util.c:1315 -#, c-format -msgid "expected %s, saw %s" -msgstr "" - -#: ../libvips/iofuncs/util.c:1485 -#, c-format -msgid "unable to make temporary file %s" -msgstr "" - -#: ../libvips/iofuncs/operation.c:97 -msgid "input" -msgstr "" - -#: ../libvips/iofuncs/operation.c:97 -msgid "output" -msgstr "" - -#: ../libvips/iofuncs/operation.c:246 -msgid "operations" -msgstr "" - -#: ../libvips/iofuncs/operation.c:273 -msgid "usage:" -msgstr "" - -#: ../libvips/iofuncs/operation.c:699 -#, c-format -msgid "unknown argument '%s'" -msgstr "" - -#: ../libvips/iofuncs/operation.c:810 -msgid "too few arguments" -msgstr "" - -#: ../libvips/iofuncs/operation.c:931 -msgid "too many arguments" -msgstr "" - -#: ../libvips/iofuncs/header.c:210 -#, c-format -msgid "unknown band format %d" -msgstr "" - -#: ../libvips/iofuncs/header.c:781 -#, c-format -msgid "field \"%s\" not found" -msgstr "" - -#: ../libvips/iofuncs/header.c:949 -#, c-format -msgid "field \"%s\" is of type %s, not %s" -msgstr "" - -#: ../libvips/iofuncs/sinkmemory.c:108 -msgid "per-thread state for sinkmemory" -msgstr "" - -#: ../libvips/iofuncs/sinkdisc.c:121 -msgid "per-thread state for sinkdisc" +#: ../libvips/iofuncs/sink.c:175 +msgid "per-thread state for sink" msgstr "" #: ../libvips/iofuncs/error.c:210 @@ -2948,6 +2677,279 @@ msgstr "" msgid "mask must be 1D" msgstr "" +#: ../libvips/iofuncs/util.c:639 +msgid "unable to get file stats" +msgstr "" + +#: ../libvips/iofuncs/util.c:720 +#, c-format +msgid "unable to open file \"%s\" for reading" +msgstr "" + +#: ../libvips/iofuncs/util.c:742 +#, c-format +msgid "unable to open file \"%s\" for writing" +msgstr "" + +#: ../libvips/iofuncs/util.c:767 +#, c-format +msgid "\"%s\" too long" +msgstr "" + +#: ../libvips/iofuncs/util.c:784 +msgid "out of memory" +msgstr "" + +#: ../libvips/iofuncs/util.c:810 +#, c-format +msgid "error reading from file \"%s\"" +msgstr "" + +#: ../libvips/iofuncs/util.c:857 +#, c-format +msgid "write error (%zd out of %zd blocks written) ... disc full?" +msgstr "" + +#: ../libvips/iofuncs/util.c:1106 ../libvips/iofuncs/util.c:1113 +msgid "unable to truncate" +msgstr "" + +#: ../libvips/iofuncs/util.c:1297 +msgid "unexpected end of string" +msgstr "" + +#: ../libvips/iofuncs/util.c:1315 +#, c-format +msgid "expected %s, saw %s" +msgstr "" + +#: ../libvips/iofuncs/util.c:1485 +#, c-format +msgid "unable to make temporary file %s" +msgstr "" + +#. File length unit. +#. +#: ../libvips/iofuncs/buf.c:520 +msgid "bytes" +msgstr "" + +#. Kilo byte unit. +#. +#: ../libvips/iofuncs/buf.c:524 +msgid "KB" +msgstr "" + +#. Mega byte unit. +#. +#: ../libvips/iofuncs/buf.c:528 +msgid "MB" +msgstr "" + +#. Giga byte unit. +#. +#: ../libvips/iofuncs/buf.c:532 +msgid "GB" +msgstr "" + +#. Tera byte unit. +#. +#: ../libvips/iofuncs/buf.c:536 +msgid "TB" +msgstr "" + +#: ../libvips/iofuncs/base64.c:170 +msgid "too little data" +msgstr "" + +#. We shouldn't really be used for large amounts of data. +#. +#: ../libvips/iofuncs/base64.c:176 ../libvips/iofuncs/base64.c:241 +msgid "too much data" +msgstr "" + +#: ../libvips/iofuncs/generate.c:606 +msgid "demand hint not set" +msgstr "" + +#: ../libvips/iofuncs/generate.c:625 ../libvips/iofuncs/generate.c:650 +msgid "generate() called twice" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:130 ../libvips/iofuncs/mapfile.c:297 +msgid "unable to CreateFileMapping" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:138 ../libvips/iofuncs/mapfile.c:309 +msgid "unable to MapViewOfFile" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:178 +msgid "unable to mmap" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:179 +#, c-format +msgid "" +"map failed (%s), running very low on system resources, expect a crash soon" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:196 ../libvips/iofuncs/mapfile.c:303 +msgid "unable to UnmapViewOfFile" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:202 +msgid "unable to munmap file" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:224 +msgid "file is less than 64 bytes" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:229 ../libvips/iofuncs/mapfile.c:263 +msgid "unable to get file status" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:235 +msgid "not a regular file" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:269 +msgid "unable to read data" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:329 +#, c-format +msgid "unable to mmap: \"%s\" - %s" +msgstr "" + +#: ../libvips/iofuncs/mapfile.c:339 +#, c-format +msgid "unable to mmap \"%s\" to same address" +msgstr "" + +#: ../libvips/iofuncs/init.c:366 +msgid "evaluate with N concurrent threads" +msgstr "" + +#: ../libvips/iofuncs/init.c:369 +msgid "set tile width to N (DEBUG)" +msgstr "" + +#: ../libvips/iofuncs/init.c:372 +msgid "set tile height to N (DEBUG)" +msgstr "" + +#: ../libvips/iofuncs/init.c:375 +msgid "set thinstrip height to N (DEBUG)" +msgstr "" + +#: ../libvips/iofuncs/init.c:378 +msgid "set fatstrip height to N (DEBUG)" +msgstr "" + +#: ../libvips/iofuncs/init.c:381 +msgid "show progress feedback" +msgstr "" + +#: ../libvips/iofuncs/init.c:384 +msgid "leak-check on exit" +msgstr "" + +#: ../libvips/iofuncs/init.c:387 +msgid "images larger than N are decompressed to disc" +msgstr "" + +#: ../libvips/iofuncs/init.c:390 +msgid "disable vectorised versions of operations" +msgstr "" + +#: ../libvips/iofuncs/init.c:393 +msgid "cache at most N operations" +msgstr "" + +#: ../libvips/iofuncs/init.c:396 +msgid "cache at most N bytes in memory" +msgstr "" + +#: ../libvips/iofuncs/init.c:399 +msgid "allow at most N open files" +msgstr "" + +#: ../libvips/iofuncs/init.c:402 +msgid "trace operation cache" +msgstr "" + +#: ../libvips/iofuncs/init.c:405 +msgid "dump operation cache on exit" +msgstr "" + +#: ../libvips/iofuncs/init.c:428 +msgid "VIPS Options" +msgstr "" + +#: ../libvips/iofuncs/init.c:428 +msgid "Show VIPS options" +msgstr "" + +#: ../libvips/iofuncs/object.c:148 +#, c-format +msgid "parameter %s not set" +msgstr "" + +#: ../libvips/iofuncs/object.c:505 +#, c-format +msgid "no property named `%s'" +msgstr "" + +#: ../libvips/iofuncs/object.c:513 +#, c-format +msgid "no vips argument named `%s'" +msgstr "" + +#: ../libvips/iofuncs/object.c:520 +#, c-format +msgid "argument `%s' has no instance" +msgstr "" + +#: ../libvips/iofuncs/object.c:1297 +msgid "base class" +msgstr "" + +#: ../libvips/iofuncs/object.c:1311 +msgid "Nickname" +msgstr "" + +#: ../libvips/iofuncs/object.c:1312 +msgid "Class nickname" +msgstr "" + +#: ../libvips/iofuncs/object.c:1318 +msgid "Description" +msgstr "" + +#: ../libvips/iofuncs/object.c:1319 +msgid "Class description" +msgstr "" + +#: ../libvips/iofuncs/object.c:1509 +#, c-format +msgid "enum '%s' has no member '%s'" +msgstr "" + +#: ../libvips/iofuncs/object.c:1769 +#, c-format +msgid "unable to set '%s'" +msgstr "" + +#: ../libvips/iofuncs/object.c:1777 +msgid "not , or ) after parameter" +msgstr "" + +#: ../libvips/iofuncs/object.c:1784 +msgid "extra tokens after ')'" +msgstr "" + #: ../libvips/iofuncs/threadpool.c:217 #, c-format msgid "threads clipped to %d" @@ -2957,10 +2959,36 @@ msgstr "" msgid "per-thread state for vipsthreadpool" msgstr "" +#: ../libvips/iofuncs/memory.c:231 +msgid "vips_free: too many frees" +msgstr "" + +#: ../libvips/iofuncs/memory.c:235 +msgid "vips_free: too much free" +msgstr "" + +#: ../libvips/iofuncs/memory.c:295 ../libvips/iofuncs/memory.c:298 +#, c-format +msgid "out of memory --- size == %dMB" +msgstr "" + +#: ../libvips/morphology/im_cntlines.c:81 +msgid "flag should be 0 (horizontal) or 1 (vertical)" +msgstr "" + #: ../libvips/morphology/im_profile.c:104 msgid "dir not 0 or 1" msgstr "" +#: ../libvips/morphology/im_rank_image.c:303 +msgid "zero input images!" +msgstr "" + +#: ../libvips/morphology/im_rank_image.c:308 +#, c-format +msgid "index should be in range 0 - %d" +msgstr "" + #: ../libvips/morphology/morphology.c:311 #, c-format msgid "bad mask element (%d should be 0, 128 or 255)" @@ -2974,49 +3002,12 @@ msgstr "" msgid "image too narrow" msgstr "" -#: ../libvips/morphology/im_cntlines.c:81 -msgid "flag should be 0 (horizontal) or 1 (vertical)" -msgstr "" - #: ../libvips/morphology/im_rank.c:365 msgid "image too small for window" msgstr "" -#: ../libvips/morphology/im_rank_image.c:303 -msgid "zero input images!" -msgstr "" - -#: ../libvips/morphology/im_rank_image.c:308 -#, c-format -msgid "index should be in range 0 - %d" -msgstr "" - -#: ../libvips/mosaicing/im_lrmerge.c:213 ../libvips/mosaicing/im_lrmerge.c:262 -#: ../libvips/mosaicing/im_lrmerge.c:603 ../libvips/mosaicing/im_tbmerge.c:163 -#: ../libvips/mosaicing/im_tbmerge.c:217 ../libvips/mosaicing/im_tbmerge.c:535 -msgid "internal error" -msgstr "" - -#: ../libvips/mosaicing/im_lrmerge.c:703 -msgid "mwidth must be -1 or >= 0" -msgstr "" - -#: ../libvips/mosaicing/im_lrmerge.c:732 -msgid "no overlap" -msgstr "" - -#: ../libvips/mosaicing/im_lrmerge.c:803 ../libvips/mosaicing/im_tbmerge.c:634 -#: ../libvips/resample/im_affine.c:469 -msgid "unknown coding type" -msgstr "" - -#: ../libvips/mosaicing/im_lrmerge.c:820 ../libvips/mosaicing/im_tbmerge.c:652 -msgid "too much overlap" -msgstr "" - -#: ../libvips/mosaicing/im_remosaic.c:104 -#, c-format -msgid "substitute image \"%s\" is not the same size as \"%s\"" +#: ../libvips/mosaicing/im_clinear.c:136 +msgid "im_invmat failed" msgstr "" #: ../libvips/mosaicing/im_tbmosaic.c:89 @@ -3034,17 +3025,19 @@ msgstr "" msgid "unknown Coding type" msgstr "" -#: ../libvips/mosaicing/im_chkpair.c:200 -msgid "inputs incompatible" +#: ../libvips/mosaicing/im_tbmerge.c:163 ../libvips/mosaicing/im_tbmerge.c:217 +#: ../libvips/mosaicing/im_tbmerge.c:535 ../libvips/mosaicing/im_lrmerge.c:213 +#: ../libvips/mosaicing/im_lrmerge.c:262 ../libvips/mosaicing/im_lrmerge.c:603 +msgid "internal error" msgstr "" -#: ../libvips/mosaicing/im_chkpair.c:204 -#: ../libvips/mosaicing/im_tbcalcon.c:102 -msgid "help!" +#: ../libvips/mosaicing/im_tbmerge.c:634 ../libvips/mosaicing/im_lrmerge.c:803 +#: ../libvips/resample/im_affine.c:469 +msgid "unknown coding type" msgstr "" -#: ../libvips/mosaicing/im_tbcalcon.c:116 -msgid "overlap too small" +#: ../libvips/mosaicing/im_tbmerge.c:652 ../libvips/mosaicing/im_lrmerge.c:820 +msgid "too much overlap" msgstr "" #: ../libvips/mosaicing/global_balance.c:145 @@ -3091,6 +3084,14 @@ msgstr "" msgid "empty overlap!" msgstr "" +#: ../libvips/mosaicing/im_lrmerge.c:703 +msgid "mwidth must be -1 or >= 0" +msgstr "" + +#: ../libvips/mosaicing/im_lrmerge.c:732 +msgid "no overlap" +msgstr "" + #: ../libvips/mosaicing/im_avgdxdy.c:64 msgid "no points to average" msgstr "" @@ -3108,12 +3109,22 @@ msgstr "" msgid "not 1-band uchar image" msgstr "" -#: ../libvips/mosaicing/im_clinear.c:136 -msgid "im_invmat failed" +#: ../libvips/mosaicing/im_chkpair.c:200 +msgid "inputs incompatible" msgstr "" -#: ../libvips/other/im_zone.c:80 -msgid "size must be even and positive" +#: ../libvips/mosaicing/im_chkpair.c:204 +#: ../libvips/mosaicing/im_tbcalcon.c:102 +msgid "help!" +msgstr "" + +#: ../libvips/mosaicing/im_remosaic.c:104 +#, c-format +msgid "substitute image \"%s\" is not the same size as \"%s\"" +msgstr "" + +#: ../libvips/mosaicing/im_tbcalcon.c:116 +msgid "overlap too small" msgstr "" #: ../libvips/other/im_sines.c:88 @@ -3124,28 +3135,20 @@ msgstr "" msgid "calloc failed" msgstr "" -#: ../libvips/other/im_eye.c:83 -msgid "factor should be in [1,0)" +#: ../libvips/other/im_zone.c:80 +msgid "size must be even and positive" msgstr "" -#: ../libvips/resample/im_affine.c:410 -msgid "output coordinates out of range" +#: ../libvips/other/im_eye.c:83 +msgid "factor should be in [1,0)" msgstr "" #: ../libvips/resample/im_shrink.c:346 msgid "shrink factors should be >= 1" msgstr "" -#: ../libvips/resample/interpolate.c:180 -msgid "VIPS interpolators" -msgstr "" - -#: ../libvips/resample/interpolate.c:361 -msgid "Nearest-neighbour interpolation" -msgstr "" - -#: ../libvips/resample/interpolate.c:532 -msgid "Bilinear interpolation" +#: ../libvips/resample/im_affine.c:410 +msgid "output coordinates out of range" msgstr "" #: ../libvips/resample/im_rightshift_size.c:120 @@ -3160,6 +3163,18 @@ msgstr "" msgid "image and band_fmt must match in sign" msgstr "" +#: ../libvips/resample/interpolate.c:180 +msgid "VIPS interpolators" +msgstr "" + +#: ../libvips/resample/interpolate.c:361 +msgid "Nearest-neighbour interpolation" +msgstr "" + +#: ../libvips/resample/interpolate.c:532 +msgid "Bilinear interpolation" +msgstr "" + #: ../libvips/video/im_video_test.c:51 msgid "error requested" msgstr "" @@ -3460,18 +3475,18 @@ msgstr "" msgid "- thumbnail generator" msgstr "" -#: ../libvips/resample/bicubic.cpp:430 -msgid "Bicubic interpolation (Catmull-Rom)" +#: ../libvips/resample/vsqbs.cpp:400 +msgid "B-Splines with antialiasing smoothing" msgstr "" #: ../libvips/resample/nohalo.cpp:1577 msgid "Edge sharpening resampler with halo reduction" msgstr "" -#: ../libvips/resample/vsqbs.cpp:400 -msgid "B-Splines with antialiasing smoothing" -msgstr "" - #: ../libvips/resample/lbb.cpp:861 msgid "Reduced halo bicubic" msgstr "" + +#: ../libvips/resample/bicubic.cpp:430 +msgid "Bicubic interpolation (Catmull-Rom)" +msgstr "" From abe43f3068b6ff5f9c7ea7cafdf64e73b35af865 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Tue, 17 Apr 2012 21:16:05 +0100 Subject: [PATCH 17/17] up max buf size allows larger defs in nip2 --- ChangeLog | 3 +++ configure.in | 6 +++--- libvips/iofuncs/buf.c | 2 +- libvips/iofuncs/util.c | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index dca0d0b5..ddb0d85b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +17/4/12 started 7.28.4 +- up max buffer size for vipsbuf + 6/4/12 started 7.28.3 - vips_divide() failed for int arguments - fix warning for unused vips7 gvalue argument diff --git a/configure.in b/configure.in index ee2def22..d29a1425 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ # also update the version number in the m4 macros below -AC_INIT(vips, 7.28.3, vipsip@jiscmail.ac.uk) +AC_INIT(vips, 7.28.4, vipsip@jiscmail.ac.uk) # required for gobject-introspection AC_PREREQ(2.62) @@ -15,7 +15,7 @@ AC_CONFIG_MACRO_DIR([m4]) # user-visible library versioning m4_define([vips_major_version], [7]) m4_define([vips_minor_version], [28]) -m4_define([vips_micro_version], [3]) +m4_define([vips_micro_version], [4]) m4_define([vips_version], [vips_major_version.vips_minor_version.vips_micro_version]) @@ -35,7 +35,7 @@ VIPS_VERSION_STRING=$VIPS_VERSION-`date` # interface changes not backwards compatible?: reset age to 0 LIBRARY_CURRENT=31 -LIBRARY_REVISION=3 +LIBRARY_REVISION=4 LIBRARY_AGE=16 # patched into include/vips/version.h diff --git a/libvips/iofuncs/buf.c b/libvips/iofuncs/buf.c index 815fb76c..ea875ba2 100644 --- a/libvips/iofuncs/buf.c +++ b/libvips/iofuncs/buf.c @@ -74,7 +74,7 @@ /* Largest string we can append in one operation. */ -#define MAX_STRSIZE (16000) +#define MAX_STRSIZE (100000) /** * VIPS_BUF_STATIC: diff --git a/libvips/iofuncs/util.c b/libvips/iofuncs/util.c index 882530e9..bf23160a 100644 --- a/libvips/iofuncs/util.c +++ b/libvips/iofuncs/util.c @@ -89,7 +89,7 @@ /* Temp buffer for snprintf() layer on old systems. */ -#define MAX_BUF (32768) +#define MAX_BUF (100000) /* Test two lists for eqality. */