Merge remote-tracking branch 'origin/master'

Conflicts:
	ChangeLog
	configure.in
This commit is contained in:
John Cupitt 2012-08-06 15:22:25 +01:00
commit 9cffb5f939
24 changed files with 267 additions and 151 deletions

View File

@ -1,3 +1,9 @@
20/7/12 started 7.30.0
- support "rs" mode in vips7
- add --vips-version cmdline arg
- fix --without-tiff / exr / jpeg / png / magick
- add --vips-fatal flag
19/3/12 started 7.29.0 19/3/12 started 7.29.0
- sanity-check PNG read geometry - sanity-check PNG read geometry
- nearest-neighbor interpolation rounds coordinates to nearest instead of - nearest-neighbor interpolation rounds coordinates to nearest instead of
@ -26,6 +32,10 @@
- png save compression range was wrong - png save compression range was wrong
- more/moreeq was wrong - more/moreeq was wrong
- vips7 ppm save with options was broken - vips7 ppm save with options was broken
<<<<<<< HEAD
=======
- don't cache write operations
>>>>>>> origin/master
18/6/12 started 7.28.9 18/6/12 started 7.28.9
- slightly more memory debugging output - slightly more memory debugging output

View File

@ -3,7 +3,7 @@
if ENABLE_CXX if ENABLE_CXX
C_COMPILE_DIR = libvipsCC C_COMPILE_DIR = libvipsCC
C_DIST_DIR = C_DIST_DIR =
C_PKGCONFIG = vipsCC-7.${VIPS_MINOR_VERSION}.pc C_PKGCONFIG = vipsCC.pc
# turn on Python if we can (requires C++) # turn on Python if we can (requires C++)
if HAVE_PYTHON if HAVE_PYTHON
@ -32,15 +32,15 @@ EXTRA_DIST = \
m4 \ m4 \
benchmark \ benchmark \
bootstrap.sh \ bootstrap.sh \
vips-7.${VIPS_MINOR_VERSION}.pc.in \ vips.pc.in \
vipsCC-7.${VIPS_MINOR_VERSION}.pc.in \ vipsCC.pc.in \
acinclude.m4 \ acinclude.m4 \
depcomp \ depcomp \
$(C_DIST_DIR) \ $(C_DIST_DIR) \
$(P_DIST_DIR) $(P_DIST_DIR)
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = vips-7.${VIPS_MINOR_VERSION}.pc $(C_PKGCONFIG) pkgconfig_DATA = vips.pc $(C_PKGCONFIG)
install-exec-hook: install-exec-hook:
-rm -rf ${DESTDIR}$(datadir)/doc/vips -rm -rf ${DESTDIR}$(datadir)/doc/vips

View File

@ -2,7 +2,7 @@
# also update the version number in the m4 macros below # also update the version number in the m4 macros below
AC_INIT([vips], [7.29.0], [vipsip@jiscmail.ac.uk]) AC_INIT([vips], [7.30.0], [vipsip@jiscmail.ac.uk])
# required for gobject-introspection # required for gobject-introspection
AC_PREREQ(2.62) AC_PREREQ(2.62)
@ -16,7 +16,7 @@ AC_CONFIG_MACRO_DIR([m4])
# user-visible library versioning # user-visible library versioning
m4_define([vips_major_version], [7]) m4_define([vips_major_version], [7])
m4_define([vips_minor_version], [29]) m4_define([vips_minor_version], [30])
m4_define([vips_micro_version], [0]) m4_define([vips_micro_version], [0])
m4_define([vips_version], m4_define([vips_version],
[vips_major_version.vips_minor_version.vips_micro_version]) [vips_major_version.vips_minor_version.vips_micro_version])
@ -37,7 +37,7 @@ VIPS_VERSION_STRING=$VIPS_VERSION-`date`
# binary interface changes not backwards compatible?: reset age to 0 # binary interface changes not backwards compatible?: reset age to 0
LIBRARY_CURRENT=33 LIBRARY_CURRENT=33
LIBRARY_REVISION=2 LIBRARY_REVISION=3
LIBRARY_AGE=1 LIBRARY_AGE=1
# patched into include/vips/version.h # patched into include/vips/version.h
@ -218,7 +218,7 @@ if test x"$enable_cxx" != x"no"; then
AC_DEFINE(ENABLE_CXX,1,[build C++ components]) AC_DEFINE(ENABLE_CXX,1,[build C++ components])
AM_CONDITIONAL(ENABLE_CXX, true) AM_CONDITIONAL(ENABLE_CXX, true)
# need -lstdc++ for (eg.) the C++ format loaders # need -lstdc++ for (eg.) the C++ format loaders
# this gets added to vips-7.xx.pc to help mingw and friends link programs # this gets added to vips.pc to help mingw and friends link programs
# using libvips # using libvips
VIPS_CXX_LIBS="-lstdc++" VIPS_CXX_LIBS="-lstdc++"
enable_cxx=yes enable_cxx=yes
@ -685,12 +685,9 @@ AC_SUBST(VIPS_LIBS)
AC_SUBST(VIPS_CXX_LIBS) AC_SUBST(VIPS_CXX_LIBS)
AC_SUBST(PACKAGES_USED) AC_SUBST(PACKAGES_USED)
# you'd think we could have
# vips-$VIPS_MAJOR_VERSION.$VIPS_MINOR_VERSION.pc
# in AC_OUTPUT, but that seems to break for some combinations of sh/m4
AC_OUTPUT([ AC_OUTPUT([
vips-7.29.pc vips.pc
vipsCC-7.29.pc vipsCC.pc
Makefile Makefile
libvips/include/vips/version.h libvips/include/vips/version.h
libvips/include/Makefile libvips/include/Makefile

View File

@ -16,7 +16,7 @@
\fancyhead[LE,RO]{\leftmark} % left-even, right-odd \fancyhead[LE,RO]{\leftmark} % left-even, right-odd
\fancyhead[RE,LO]{VIPS Manual} % right-even, left-odd \fancyhead[RE,LO]{VIPS Manual} % right-even, left-odd
\fancyfoot[LE,RO]{\thepage} % left-even, right-odd \fancyfoot[LE,RO]{\thepage} % left-even, right-odd
\fancyfoot[RE,LO]{February 2012} \fancyfoot[RE,LO]{July 2012}
\begin{document} \begin{document}
@ -27,14 +27,14 @@
\begin{center} \begin{center}
\huge \huge
VIPS Manual\\ VIPS Manual\\
\large Version 7.28\\ \large Version 7.30\\
\vspace{0.5in} \vspace{0.5in}
\large \large
John Cupitt, John Cupitt,
Kirk Martinez\\ Kirk Martinez\\
\end{center} \end{center}
VIPS is currently (v. 7.28, February 2012) in an API transition. The API as VIPS is currently (v. 7.30, July 2012) in an API transition. The API as
documented in 7.24 is still complete and supported and is the one you should documented in 7.24 is still complete and supported and is the one you should
use. The 8.0 API is not yet done and may still change before completion. use. The 8.0 API is not yet done and may still change before completion.

View File

@ -110,7 +110,7 @@ input_image_init( im_object *obj, char *str )
{ {
IMAGE **im = (IMAGE **) obj; IMAGE **im = (IMAGE **) obj;
return( !(*im = vips__deprecated_open_read( str )) ); return( !(*im = vips__deprecated_open_read( str, FALSE )) );
} }
/* Input image type. /* Input image type.

View File

@ -53,7 +53,13 @@
int int
im_exr2vips( const char *filename, IMAGE *out ) im_exr2vips( const char *filename, IMAGE *out )
{ {
#ifdef HAVE_OPENEXR
return( vips__openexr_read( filename, out ) ); return( vips__openexr_read( filename, out ) );
#else
vips_error( "im_exr2vips", _( "no OpenEXR support in your libvips" ) );
return( -1 );
#endif /*HAVE_OPENEXR*/
} }
static const char *exr_suffs[] = { ".exr", NULL }; static const char *exr_suffs[] = { ".exr", NULL };

View File

@ -58,6 +58,7 @@ jpeg2vips( const char *name, IMAGE *out, gboolean header_only )
char mode[FILENAME_MAX]; char mode[FILENAME_MAX];
char *p, *q; char *p, *q;
int shrink; int shrink;
int seq;
gboolean fail_on_warn; gboolean fail_on_warn;
/* By default, we ignore any warnings. We want to get as much of /* By default, we ignore any warnings. We want to get as much of
@ -70,6 +71,7 @@ jpeg2vips( const char *name, IMAGE *out, gboolean header_only )
im_filename_split( name, filename, mode ); im_filename_split( name, filename, mode );
p = &mode[0]; p = &mode[0];
shrink = 1; shrink = 1;
seq = 0;
if( (q = im_getnextoption( &p )) ) { if( (q = im_getnextoption( &p )) ) {
shrink = atoi( q ); shrink = atoi( q );
@ -84,13 +86,9 @@ jpeg2vips( const char *name, IMAGE *out, gboolean header_only )
if( im_isprefix( "fail", q ) ) if( im_isprefix( "fail", q ) )
fail_on_warn = TRUE; fail_on_warn = TRUE;
} }
/* vips__jpeg_read_file() is always sequential. Parse the option, but
* don't use it.
*/
if( (q = im_getnextoption( &p )) ) { if( (q = im_getnextoption( &p )) ) {
if( im_isprefix( "seq", q ) ) if( im_isprefix( "seq", q ) )
; seq = 1;
} }
/* Don't use vips_jpegload() ... we call the jpeg func directly in /* Don't use vips_jpegload() ... we call the jpeg func directly in
@ -106,14 +104,21 @@ jpeg2vips( const char *name, IMAGE *out, gboolean header_only )
*/ */
if( !header_only && if( !header_only &&
!seq &&
out->dtype == VIPS_IMAGE_PARTIAL ) { out->dtype == VIPS_IMAGE_PARTIAL ) {
if( vips__image_wio_output( out ) ) if( vips__image_wio_output( out ) )
return( -1 ); return( -1 );
} }
#ifdef HAVE_JPEG
if( vips__jpeg_read_file( filename, out, if( vips__jpeg_read_file( filename, out,
header_only, shrink, fail_on_warn ) ) header_only, shrink, fail_on_warn ) )
return( -1 ); return( -1 );
#else
vips_error( "im_jpeg2vips", _( "no JPEG support in your libvips" ) );
return( -1 );
#endif /*HAVE_JPEG*/
return( 0 ); return( 0 );
} }

View File

@ -46,7 +46,14 @@
int int
im_magick2vips( const char *filename, IMAGE *out ) im_magick2vips( const char *filename, IMAGE *out )
{ {
#ifdef HAVE_MAGICK
return( vips__magick_read( filename, out ) ); return( vips__magick_read( filename, out ) );
#else
vips_error( "im_magick2vips",
_( "no libMagick support in your libvips" ) );
return( -1 );
#endif /*HAVE_MAGICK*/
} }
static int static int

View File

@ -52,13 +52,15 @@ png2vips( const char *name, IMAGE *out, gboolean header_only )
char filename[FILENAME_MAX]; char filename[FILENAME_MAX];
char mode[FILENAME_MAX]; char mode[FILENAME_MAX];
char *p, *q; char *p, *q;
int seq;
im_filename_split( name, filename, mode ); im_filename_split( name, filename, mode );
seq = 0;
p = &mode[0]; p = &mode[0];
if( (q = im_getnextoption( &p )) ) { if( (q = im_getnextoption( &p )) ) {
if( im_isprefix( "seq", q ) ) if( im_isprefix( "seq", q ) )
; seq = 1;
} }
/* We need to be compatible with the pre-sequential mode /* We need to be compatible with the pre-sequential mode
@ -72,19 +74,26 @@ png2vips( const char *name, IMAGE *out, gboolean header_only )
*/ */
if( !header_only && if( !header_only &&
!seq &&
out->dtype == VIPS_IMAGE_PARTIAL ) { out->dtype == VIPS_IMAGE_PARTIAL ) {
if( vips__image_wio_output( out ) ) if( vips__image_wio_output( out ) )
return( -1 ); return( -1 );
} }
#ifdef HAVE_PNG
if( header_only ) { if( header_only ) {
if( vips__png_read( filename, out ) )
return( -1 );
}
else {
if( vips__png_header( filename, out ) ) if( vips__png_header( filename, out ) )
return( -1 ); return( -1 );
} }
else {
if( vips__png_read( filename, out ) )
return( -1 );
}
#else
vips_error( "im_png2vips", _( "no PNG support in your libvips" ) );
return( -1 );
#endif /*HAVE_PNG*/
return( 0 ); return( 0 );
} }

View File

@ -57,17 +57,19 @@ tiff2vips( const char *name, IMAGE *out, gboolean header_only )
char mode[FILENAME_MAX]; char mode[FILENAME_MAX];
char *p, *q; char *p, *q;
int page; int page;
int seq;
im_filename_split( name, filename, mode ); im_filename_split( name, filename, mode );
page = 0; page = 0;
seq = 0;
p = &mode[0]; p = &mode[0];
if( (q = im_getnextoption( &p )) ) { if( (q = im_getnextoption( &p )) ) {
page = atoi( q ); page = atoi( q );
} }
if( (q = im_getnextoption( &p )) ) { if( (q = im_getnextoption( &p )) ) {
if( im_isprefix( "seq", q ) ) if( im_isprefix( "seq", q ) )
; seq = 1;
} }
/* We need to be compatible with the pre-sequential mode /* We need to be compatible with the pre-sequential mode
@ -82,12 +84,14 @@ tiff2vips( const char *name, IMAGE *out, gboolean header_only )
*/ */
if( !header_only && if( !header_only &&
!seq &&
!vips__istifftiled( filename ) && !vips__istifftiled( filename ) &&
out->dtype == VIPS_IMAGE_PARTIAL ) { out->dtype == VIPS_IMAGE_PARTIAL ) {
if( vips__image_wio_output( out ) ) if( vips__image_wio_output( out ) )
return( -1 ); return( -1 );
} }
#ifdef HAVE_TIFF
if( header_only ) { if( header_only ) {
if( vips__tiff_read_header( filename, out, page ) ) if( vips__tiff_read_header( filename, out, page ) )
return( -1 ); return( -1 );
@ -96,6 +100,11 @@ tiff2vips( const char *name, IMAGE *out, gboolean header_only )
if( vips__tiff_read( filename, out, page ) ) if( vips__tiff_read( filename, out, page ) )
return( -1 ); return( -1 );
} }
#else
vips_error( "im_tiff2vips", _( "no TIFF support in your libvips" ) );
return( -1 );
#endif /*HAVE_TIFF*/
return( 0 ); return( 0 );
} }

View File

@ -63,7 +63,7 @@ typedef struct {
VipsImage *image; VipsImage *image;
VipsFormatClass *format;/* Read in pixels with this */ VipsFormatClass *format;/* Read in pixels with this */
char *filename; /* Get pixels from here */ char *filename; /* Get pixels from here */
gboolean disc; /* Read via disc requested */ gboolean sequential; /* Sequential read requested */
VipsImage *real; /* The real decompressed image */ VipsImage *real; /* The real decompressed image */
} Lazy; } Lazy;
@ -80,7 +80,7 @@ lazy_free_cb( VipsImage *image, Lazy *lazy )
static Lazy * static Lazy *
lazy_new( VipsImage *image, lazy_new( VipsImage *image,
VipsFormatClass *format, const char *filename, gboolean disc ) VipsFormatClass *format, const char *filename, gboolean sequential )
{ {
Lazy *lazy; Lazy *lazy;
@ -89,7 +89,7 @@ lazy_new( VipsImage *image,
lazy->image = image; lazy->image = image;
lazy->format = format; lazy->format = format;
lazy->filename = g_strdup( filename ); lazy->filename = g_strdup( filename );
lazy->disc = disc; lazy->sequential = sequential;
lazy->real = NULL; lazy->real = NULL;
g_signal_connect( image, "close", G_CALLBACK( lazy_free_cb ), lazy ); g_signal_connect( image, "close", G_CALLBACK( lazy_free_cb ), lazy );
@ -132,13 +132,13 @@ lazy_real_image( Lazy *lazy )
VipsImage *real; VipsImage *real;
/* We open via disc if: /* We open via disc if:
* - 'disc' is set * - 'sequential' is not set
* - disc_threshold() has not been set to zero * - disc_threshold() has not been set to zero
* - the format does not support lazy read * - the format does not support lazy read
* - the uncompressed image will be larger than disc_threshold() * - the uncompressed image will be larger than disc_threshold()
*/ */
real = NULL; real = NULL;
if( lazy->disc && if( !lazy->sequential &&
disc_threshold() && disc_threshold() &&
!(vips_format_get_flags( lazy->format, lazy->filename ) & !(vips_format_get_flags( lazy->format, lazy->filename ) &
VIPS_FORMAT_PARTIAL) && VIPS_FORMAT_PARTIAL) &&
@ -203,11 +203,11 @@ open_lazy_generate( VipsRegion *or,
*/ */
static int static int
vips_image_open_lazy( VipsImage *image, vips_image_open_lazy( VipsImage *image,
VipsFormatClass *format, const char *filename, gboolean disc ) VipsFormatClass *format, const char *filename, gboolean sequential )
{ {
Lazy *lazy; Lazy *lazy;
lazy = lazy_new( image, format, filename, disc ); lazy = lazy_new( image, format, filename, sequential );
/* Is there a ->header() function? We need to do a lazy load. /* Is there a ->header() function? We need to do a lazy load.
*/ */
@ -273,7 +273,7 @@ vips_attach_save( VipsImage *image, int (*save_fn)(), const char *filename )
} }
IMAGE * IMAGE *
vips__deprecated_open_read( const char *filename ) vips__deprecated_open_read( const char *filename, gboolean sequential )
{ {
VipsFormatClass *format; VipsFormatClass *format;
@ -293,7 +293,8 @@ vips__deprecated_open_read( const char *filename )
IMAGE *image; IMAGE *image;
image = vips_image_new(); image = vips_image_new();
if( vips_image_open_lazy( image, format, filename, TRUE ) ) { if( vips_image_open_lazy( image, format,
filename, sequential ) ) {
g_object_unref( image ); g_object_unref( image );
return( NULL ); return( NULL );
} }

View File

@ -62,10 +62,16 @@ im_open( const char *filename, const char *mode )
/* We have to go via the old VipsFormat system so we can support the /* We have to go via the old VipsFormat system so we can support the
* "filename:option" syntax. * "filename:option" syntax.
*
* Use "rs" to turn on seq mode.
*/ */
if( strcmp( mode, "r" ) == 0 || if( strcmp( mode, "r" ) == 0 ||
strcmp( mode, "rd" ) == 0 ) { strcmp( mode, "rd" ) == 0 ) {
if( !(image = vips__deprecated_open_read( filename )) ) if( !(image = vips__deprecated_open_read( filename, FALSE )) )
return( NULL );
}
else if( strcmp( mode, "rs" ) == 0 ) {
if( !(image = vips__deprecated_open_read( filename, TRUE )) )
return( NULL ); return( NULL );
} }
else if( strcmp( mode, "w" ) == 0 ) { else if( strcmp( mode, "w" ) == 0 ) {

View File

@ -890,7 +890,7 @@ vips_foreign_load_build( VipsObject *object )
} }
static VipsOperationFlags static VipsOperationFlags
vips_foreign_load_real_get_flags( VipsOperation *operation ) vips_foreign_load_operation_get_flags( VipsOperation *operation )
{ {
VipsForeignLoad *load = VIPS_FOREIGN_LOAD( operation ); VipsForeignLoad *load = VIPS_FOREIGN_LOAD( operation );
VipsOperationFlags flags; VipsOperationFlags flags;
@ -920,7 +920,7 @@ vips_foreign_load_class_init( VipsForeignLoadClass *class )
object_class->nickname = "fileload"; object_class->nickname = "fileload";
object_class->description = _( "file loaders" ); object_class->description = _( "file loaders" );
operation_class->get_flags = vips_foreign_load_real_get_flags; operation_class->get_flags = vips_foreign_load_operation_get_flags;
VIPS_ARG_IMAGE( class, "out", 2, VIPS_ARG_IMAGE( class, "out", 2,
_( "Output" ), _( "Output" ),
@ -1428,6 +1428,10 @@ vips_foreign_save_class_init( VipsForeignSaveClass *class )
*/ */
operation_class->flags |= VIPS_OPERATION_SEQUENTIAL; operation_class->flags |= VIPS_OPERATION_SEQUENTIAL;
/* Must not cache savers.
*/
operation_class->flags |= VIPS_OPERATION_NOCACHE;
/* Default to no coding allowed. /* Default to no coding allowed.
*/ */
for( i = 0; i < VIPS_CODING_LAST; i++ ) for( i = 0; i < VIPS_CODING_LAST; i++ )

View File

@ -66,6 +66,10 @@ extern int vips__thinstrip_height;
*/ */
extern int vips__concurrency; extern int vips__concurrency;
/* abort() on any error.
*/
extern int vips__fatal;
/* Give progress feedback. /* Give progress feedback.
*/ */
extern int vips__progress; extern int vips__progress;
@ -297,7 +301,7 @@ void vips_foreign_operation_init( void );
guint64 vips__parse_size( const char *size_string ); guint64 vips__parse_size( const char *size_string );
IMAGE *vips__deprecated_open_read( const char *filename ); IMAGE *vips__deprecated_open_read( const char *filename, gboolean sequential );
IMAGE *vips__deprecated_open_write( const char *filename ); IMAGE *vips__deprecated_open_write( const char *filename );
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -96,8 +96,7 @@ typedef struct _VipsOperationClass {
*/ */
void (*usage)( struct _VipsOperationClass *, VipsBuf * ); void (*usage)( struct _VipsOperationClass *, VipsBuf * );
/* Return a set of operation flags. If @get_flags is NULL, just use /* Return a set of operation flags.
* flags.
*/ */
VipsOperationFlags (*get_flags)( VipsOperation * ); VipsOperationFlags (*get_flags)( VipsOperation * );
VipsOperationFlags flags; VipsOperationFlags flags;

View File

@ -155,6 +155,9 @@ vips_verror( const char *domain, const char *fmt, va_list ap )
g_mutex_unlock( vips__global_lock ); g_mutex_unlock( vips__global_lock );
VIPS_DEBUG_MSG( "vips_verror: %s\n", fmt ); VIPS_DEBUG_MSG( "vips_verror: %s\n", fmt );
if( vips__fatal )
vips_error_exit( "vips__fatal" );
} }
/** /**
@ -363,6 +366,9 @@ vips_vwarn( const char *domain, const char *fmt, va_list ap )
(void) fprintf( stderr, "\n" ); (void) fprintf( stderr, "\n" );
g_mutex_unlock( vips__global_lock ); g_mutex_unlock( vips__global_lock );
} }
if( vips__fatal )
vips_error_exit( "vips__fatal" );
} }
/** /**
@ -421,7 +427,10 @@ vips_error_exit( const char *fmt, ... )
vips_shutdown(); vips_shutdown();
exit( 1 ); if( vips__fatal )
abort();
else
exit( 1 );
} }
/** /**

View File

@ -80,6 +80,10 @@
#include <vips/internal.h> #include <vips/internal.h>
#include <vips/vector.h> #include <vips/vector.h>
/* abort() on the first warning or error.
*/
int vips__fatal = 0;
/* Use in various small places where we need a mutex and it's not worth /* Use in various small places where we need a mutex and it's not worth
* making a private one. * making a private one.
*/ */
@ -365,20 +369,50 @@ vips__ngettext( const char *msgid, const char *plural, unsigned long int n )
return( dngettext( GETTEXT_PACKAGE, msgid, plural, n ) ); return( dngettext( GETTEXT_PACKAGE, msgid, plural, n ) );
} }
static gboolean
vips_lib_version_cb( const gchar *option_name, const gchar *value,
gpointer data, GError **error )
{
printf( "libvips %s\n", VIPS_VERSION_STRING );
vips_shutdown();
exit( 0 );
}
static gboolean
vips_set_fatal_cb( const gchar *option_name, const gchar *value,
gpointer data, GError **error )
{
vips__fatal = 1;
/* Set masks for debugging ... stop on any problem.
*/
g_log_set_always_fatal(
G_LOG_FLAG_RECURSION |
G_LOG_FLAG_FATAL |
G_LOG_LEVEL_ERROR |
G_LOG_LEVEL_CRITICAL |
G_LOG_LEVEL_WARNING );
return( TRUE );
}
static GOptionEntry option_entries[] = { static GOptionEntry option_entries[] = {
{ "vips-fatal", 'f', G_OPTION_FLAG_HIDDEN | G_OPTION_FLAG_NO_ARG,
G_OPTION_ARG_CALLBACK, (gpointer) &vips_set_fatal_cb,
N_( "abort on first error or warning" ), NULL },
{ "vips-concurrency", 'c', 0, { "vips-concurrency", 'c', 0,
G_OPTION_ARG_INT, &vips__concurrency, G_OPTION_ARG_INT, &vips__concurrency,
N_( "evaluate with N concurrent threads" ), "N" }, N_( "evaluate with N concurrent threads" ), "N" },
{ "vips-tile-width", 'w', 0, { "vips-tile-width", 'w', G_OPTION_FLAG_HIDDEN,
G_OPTION_ARG_INT, &vips__tile_width, G_OPTION_ARG_INT, &vips__tile_width,
N_( "set tile width to N (DEBUG)" ), "N" }, N_( "set tile width to N (DEBUG)" ), "N" },
{ "vips-tile-height", 'h', 0, { "vips-tile-height", 'h', G_OPTION_FLAG_HIDDEN,
G_OPTION_ARG_INT, &vips__tile_height, G_OPTION_ARG_INT, &vips__tile_height,
N_( "set tile height to N (DEBUG)" ), "N" }, N_( "set tile height to N (DEBUG)" ), "N" },
{ "vips-thinstrip-height", 't', 0, { "vips-thinstrip-height", 't', G_OPTION_FLAG_HIDDEN,
G_OPTION_ARG_INT, &vips__thinstrip_height, G_OPTION_ARG_INT, &vips__thinstrip_height,
N_( "set thinstrip height to N (DEBUG)" ), "N" }, N_( "set thinstrip height to N (DEBUG)" ), "N" },
{ "vips-fatstrip-height", 'f', 0, { "vips-fatstrip-height", 'f', G_OPTION_FLAG_HIDDEN,
G_OPTION_ARG_INT, &vips__fatstrip_height, G_OPTION_ARG_INT, &vips__fatstrip_height,
N_( "set fatstrip height to N (DEBUG)" ), "N" }, N_( "set fatstrip height to N (DEBUG)" ), "N" },
{ "vips-progress", 'p', 0, { "vips-progress", 'p', 0,
@ -408,6 +442,9 @@ static GOptionEntry option_entries[] = {
{ "vips-cache-dump", 'r', 0, { "vips-cache-dump", 'r', 0,
G_OPTION_ARG_NONE, &vips__cache_dump, G_OPTION_ARG_NONE, &vips__cache_dump,
N_( "dump operation cache on exit" ), NULL }, N_( "dump operation cache on exit" ), NULL },
{ "vips-version", 'v', G_OPTION_FLAG_NO_ARG,
G_OPTION_ARG_CALLBACK, (gpointer) &vips_lib_version_cb,
N_( "print libvips version" ), NULL },
{ NULL } { NULL }
}; };

Binary file not shown.

View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=general\n" "product=glib&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-07-13 14:50+0100\n" "POT-Creation-Date: 2012-07-20 15:34+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -352,11 +352,11 @@ msgstr ""
msgid "Height of extract area" msgid "Height of extract area"
msgstr "" msgstr ""
#: ../libvips/arithmetic/math2.c:196 #: ../libvips/arithmetic/math2.c:198
msgid "pow( left, right)" msgid "pow( left, right)"
msgstr "" msgstr ""
#: ../libvips/arithmetic/math2.c:204 ../libvips/arithmetic/math2.c:401 #: ../libvips/arithmetic/math2.c:206 ../libvips/arithmetic/math2.c:403
#: ../libvips/arithmetic/complex.c:222 ../libvips/arithmetic/complex.c:476 #: ../libvips/arithmetic/complex.c:222 ../libvips/arithmetic/complex.c:476
#: ../libvips/arithmetic/math.c:205 ../libvips/arithmetic/relational.c:227 #: ../libvips/arithmetic/math.c:205 ../libvips/arithmetic/relational.c:227
#: ../libvips/arithmetic/relational.c:560 ../libvips/arithmetic/boolean.c:217 #: ../libvips/arithmetic/relational.c:560 ../libvips/arithmetic/boolean.c:217
@ -364,12 +364,12 @@ msgstr ""
msgid "Operation" msgid "Operation"
msgstr "" msgstr ""
#: ../libvips/arithmetic/math2.c:205 ../libvips/arithmetic/math2.c:402 #: ../libvips/arithmetic/math2.c:207 ../libvips/arithmetic/math2.c:404
#: ../libvips/arithmetic/math.c:206 #: ../libvips/arithmetic/math.c:206
msgid "math to perform" msgid "math to perform"
msgstr "" msgstr ""
#: ../libvips/arithmetic/math2.c:393 #: ../libvips/arithmetic/math2.c:395
msgid "pow( @in, @c )" msgid "pow( @in, @c )"
msgstr "" msgstr ""
@ -397,7 +397,7 @@ msgstr ""
#: ../libvips/conversion/rot.c:355 ../libvips/conversion/replicate.c:196 #: ../libvips/conversion/rot.c:355 ../libvips/conversion/replicate.c:196
#: ../libvips/conversion/tilecache.c:446 ../libvips/conversion/embed.c:524 #: ../libvips/conversion/tilecache.c:446 ../libvips/conversion/embed.c:524
#: ../libvips/conversion/cache.c:106 ../libvips/conversion/recomb.c:203 #: ../libvips/conversion/cache.c:106 ../libvips/conversion/recomb.c:203
#: ../libvips/conversion/sequential.c:153 ../libvips/foreign/foreign.c:1438 #: ../libvips/conversion/sequential.c:168 ../libvips/foreign/foreign.c:1442
#: ../libvips/resample/resample.c:89 #: ../libvips/resample/resample.c:89
msgid "Input" msgid "Input"
msgstr "" msgstr ""
@ -466,7 +466,7 @@ msgstr ""
msgid "Vertical position of minimum" msgid "Vertical position of minimum"
msgstr "" msgstr ""
#: ../libvips/arithmetic/im_point_bilinear.c:74 #: ../libvips/arithmetic/im_point_bilinear.c:75
msgid "coords outside image" msgid "coords outside image"
msgstr "" msgstr ""
@ -569,7 +569,7 @@ msgstr ""
#: ../libvips/conversion/copy.c:322 ../libvips/conversion/rot.c:356 #: ../libvips/conversion/copy.c:322 ../libvips/conversion/rot.c:356
#: ../libvips/conversion/replicate.c:197 ../libvips/conversion/tilecache.c:447 #: ../libvips/conversion/replicate.c:197 ../libvips/conversion/tilecache.c:447
#: ../libvips/conversion/embed.c:525 ../libvips/conversion/cache.c:107 #: ../libvips/conversion/embed.c:525 ../libvips/conversion/cache.c:107
#: ../libvips/conversion/sequential.c:154 #: ../libvips/conversion/sequential.c:169
msgid "Input image" msgid "Input image"
msgstr "" msgstr ""
@ -798,7 +798,7 @@ msgid "flatten alpha out of an image"
msgstr "" msgstr ""
#: ../libvips/conversion/flatten.c:381 ../libvips/conversion/join.c:250 #: ../libvips/conversion/flatten.c:381 ../libvips/conversion/join.c:250
#: ../libvips/conversion/insert.c:390 #: ../libvips/conversion/insert.c:392
msgid "Background" msgid "Background"
msgstr "" msgstr ""
@ -829,7 +829,7 @@ msgstr ""
msgid "bad extract area" msgid "bad extract area"
msgstr "" msgstr ""
#: ../libvips/conversion/extract.c:190 #: ../libvips/conversion/extract.c:191
msgid "extract an area from an image" msgid "extract an area from an image"
msgstr "" msgstr ""
@ -1023,11 +1023,11 @@ msgstr ""
msgid "Join left-right or up-down" msgid "Join left-right or up-down"
msgstr "" msgstr ""
#: ../libvips/conversion/join.c:236 ../libvips/conversion/insert.c:383 #: ../libvips/conversion/join.c:236 ../libvips/conversion/insert.c:385
msgid "Expand" msgid "Expand"
msgstr "" msgstr ""
#: ../libvips/conversion/join.c:237 ../libvips/conversion/insert.c:384 #: ../libvips/conversion/join.c:237 ../libvips/conversion/insert.c:386
msgid "Expand output to hold all of both inputs" msgid "Expand output to hold all of both inputs"
msgstr "" msgstr ""
@ -1039,7 +1039,7 @@ msgstr ""
msgid "Pixels between images" msgid "Pixels between images"
msgstr "" msgstr ""
#: ../libvips/conversion/join.c:251 ../libvips/conversion/insert.c:391 #: ../libvips/conversion/join.c:251 ../libvips/conversion/insert.c:393
msgid "Colour for new pixels" msgid "Colour for new pixels"
msgstr "" msgstr ""
@ -1068,39 +1068,39 @@ msgstr ""
msgid "vectors not same length" msgid "vectors not same length"
msgstr "" msgstr ""
#: ../libvips/conversion/insert.c:349 #: ../libvips/conversion/insert.c:353
msgid "insert an image" msgid "insert an image"
msgstr "" msgstr ""
#: ../libvips/conversion/insert.c:357 #: ../libvips/conversion/insert.c:359
msgid "Main" msgid "Main"
msgstr "" msgstr ""
#: ../libvips/conversion/insert.c:358 #: ../libvips/conversion/insert.c:360
msgid "Main input image" msgid "Main input image"
msgstr "" msgstr ""
#: ../libvips/conversion/insert.c:363 #: ../libvips/conversion/insert.c:365
msgid "Sub-image" msgid "Sub-image"
msgstr "" msgstr ""
#: ../libvips/conversion/insert.c:364 #: ../libvips/conversion/insert.c:366
msgid "Sub-image to insert into main image" msgid "Sub-image to insert into main image"
msgstr "" msgstr ""
#: ../libvips/conversion/insert.c:369 #: ../libvips/conversion/insert.c:371
msgid "X" msgid "X"
msgstr "" msgstr ""
#: ../libvips/conversion/insert.c:370 #: ../libvips/conversion/insert.c:372
msgid "Left edge of sub in main" msgid "Left edge of sub in main"
msgstr "" msgstr ""
#: ../libvips/conversion/insert.c:376 #: ../libvips/conversion/insert.c:378
msgid "Y" msgid "Y"
msgstr "" msgstr ""
#: ../libvips/conversion/insert.c:377 #: ../libvips/conversion/insert.c:379
msgid "Top edge of sub in main" msgid "Top edge of sub in main"
msgstr "" msgstr ""
@ -1225,13 +1225,13 @@ msgstr ""
msgid "matrix of coefficients" msgid "matrix of coefficients"
msgstr "" msgstr ""
#: ../libvips/conversion/sequential.c:86 #: ../libvips/conversion/sequential.c:83
#, c-format #, c-format
msgid "" msgid ""
"non-sequential read --- at position %d in file, but position %d requested" "non-sequential read --- at position %d in file, but position %d requested"
msgstr "" msgstr ""
#: ../libvips/conversion/sequential.c:149 #: ../libvips/conversion/sequential.c:164
msgid "check sequential access" msgid "check sequential access"
msgstr "" msgstr ""
@ -1289,7 +1289,7 @@ msgstr ""
#: ../libvips/foreign/jpegload.c:245 ../libvips/foreign/rawload.c:115 #: ../libvips/foreign/jpegload.c:245 ../libvips/foreign/rawload.c:115
#: ../libvips/foreign/matload.c:128 ../libvips/foreign/fitssave.c:128 #: ../libvips/foreign/matload.c:128 ../libvips/foreign/fitssave.c:128
#: ../libvips/foreign/radsave.c:119 ../libvips/foreign/vipssave.c:125 #: ../libvips/foreign/radsave.c:119 ../libvips/foreign/vipssave.c:125
#: ../libvips/foreign/pngsave.c:166 ../libvips/iofuncs/image.c:945 #: ../libvips/foreign/pngsave.c:168 ../libvips/iofuncs/image.c:945
msgid "Filename" msgid "Filename"
msgstr "" msgstr ""
@ -1297,7 +1297,7 @@ msgstr ""
#: ../libvips/foreign/tiffsave.c:172 ../libvips/foreign/jpegsave.c:194 #: ../libvips/foreign/tiffsave.c:172 ../libvips/foreign/jpegsave.c:194
#: ../libvips/foreign/csvsave.c:122 ../libvips/foreign/fitssave.c:129 #: ../libvips/foreign/csvsave.c:122 ../libvips/foreign/fitssave.c:129
#: ../libvips/foreign/radsave.c:120 ../libvips/foreign/vipssave.c:126 #: ../libvips/foreign/radsave.c:120 ../libvips/foreign/vipssave.c:126
#: ../libvips/foreign/pngsave.c:167 #: ../libvips/foreign/pngsave.c:169
msgid "Filename to save to" msgid "Filename to save to"
msgstr "" msgstr ""
@ -1447,7 +1447,7 @@ msgstr ""
msgid "save image to tiff file" msgid "save image to tiff file"
msgstr "" msgstr ""
#: ../libvips/foreign/tiffsave.c:178 ../libvips/foreign/pngsave.c:103 #: ../libvips/foreign/tiffsave.c:178 ../libvips/foreign/pngsave.c:105
msgid "Compression" msgid "Compression"
msgstr "" msgstr ""
@ -1569,11 +1569,11 @@ msgid "save image to jpeg buffer"
msgstr "" msgstr ""
#: ../libvips/foreign/jpegsave.c:260 ../libvips/foreign/jpegload.c:315 #: ../libvips/foreign/jpegsave.c:260 ../libvips/foreign/jpegload.c:315
#: ../libvips/foreign/pngsave.c:228 #: ../libvips/foreign/pngsave.c:230
msgid "Buffer" msgid "Buffer"
msgstr "" msgstr ""
#: ../libvips/foreign/jpegsave.c:261 ../libvips/foreign/pngsave.c:229 #: ../libvips/foreign/jpegsave.c:261 ../libvips/foreign/pngsave.c:231
msgid "Buffer to save to" msgid "Buffer to save to"
msgstr "" msgstr ""
@ -1853,8 +1853,8 @@ msgstr ""
msgid "end of file while skipping start" msgid "end of file while skipping start"
msgstr "" msgstr ""
#: ../libvips/foreign/csv.c:246 ../libvips/iofuncs/util.c:1072 #: ../libvips/foreign/csv.c:246 ../libvips/iofuncs/util.c:1084
#: ../libvips/iofuncs/util.c:1078 #: ../libvips/iofuncs/util.c:1090
msgid "unable to seek" msgid "unable to seek"
msgstr "" msgstr ""
@ -1954,27 +1954,27 @@ msgstr ""
msgid "reading associated image: %s" msgid "reading associated image: %s"
msgstr "" msgstr ""
#: ../libvips/foreign/pngsave.c:95 #: ../libvips/foreign/pngsave.c:97
msgid "save png" msgid "save png"
msgstr "" msgstr ""
#: ../libvips/foreign/pngsave.c:104 #: ../libvips/foreign/pngsave.c:106
msgid "Compression factor" msgid "Compression factor"
msgstr "" msgstr ""
#: ../libvips/foreign/pngsave.c:110 #: ../libvips/foreign/pngsave.c:112
msgid "Interlace" msgid "Interlace"
msgstr "" msgstr ""
#: ../libvips/foreign/pngsave.c:111 #: ../libvips/foreign/pngsave.c:113
msgid "Interlace image" msgid "Interlace image"
msgstr "" msgstr ""
#: ../libvips/foreign/pngsave.c:162 #: ../libvips/foreign/pngsave.c:164
msgid "save image to png file" msgid "save image to png file"
msgstr "" msgstr ""
#: ../libvips/foreign/pngsave.c:224 #: ../libvips/foreign/pngsave.c:226
msgid "save image to png buffer" msgid "save image to png buffer"
msgstr "" msgstr ""
@ -2074,7 +2074,7 @@ msgstr ""
msgid "file savers" msgid "file savers"
msgstr "" msgstr ""
#: ../libvips/foreign/foreign.c:1439 #: ../libvips/foreign/foreign.c:1443
msgid "Image to save" msgid "Image to save"
msgstr "" msgstr ""
@ -2315,7 +2315,7 @@ msgstr ""
msgid "unable to create thread" msgid "unable to create thread"
msgstr "" msgstr ""
#: ../libvips/iofuncs/sinkdisc.c:262 ../libvips/iofuncs/util.c:656 #: ../libvips/iofuncs/sinkdisc.c:262 ../libvips/iofuncs/util.c:668
msgid "write failed" msgid "write failed"
msgstr "" msgstr ""
@ -2387,7 +2387,7 @@ msgstr ""
msgid "unknown band format %d" msgid "unknown band format %d"
msgstr "" msgstr ""
#: ../libvips/iofuncs/header.c:611 ../libvips/iofuncs/generate.c:377 #: ../libvips/iofuncs/header.c:611 ../libvips/iofuncs/generate.c:376
msgid "too many images" msgid "too many images"
msgstr "" msgstr ""
@ -2500,7 +2500,7 @@ msgstr ""
msgid "bad image descriptor" msgid "bad image descriptor"
msgstr "" msgstr ""
#: ../libvips/iofuncs/image.c:1959 ../libvips/iofuncs/generate.c:716 #: ../libvips/iofuncs/image.c:1959 ../libvips/iofuncs/generate.c:715
#, c-format #, c-format
msgid "unable to output to a %s image" msgid "unable to output to a %s image"
msgstr "" msgstr ""
@ -2510,25 +2510,25 @@ msgstr ""
msgid "auto-rewind for %s failed" msgid "auto-rewind for %s failed"
msgstr "" msgstr ""
#: ../libvips/iofuncs/image.c:2079 ../libvips/iofuncs/image.c:2274 #: ../libvips/iofuncs/image.c:2079 ../libvips/iofuncs/image.c:2275
#: ../libvips/iofuncs/image.c:2291 #: ../libvips/iofuncs/image.c:2292
msgid "no image data" msgid "no image data"
msgstr "" msgstr ""
#: ../libvips/iofuncs/image.c:2147 ../libvips/iofuncs/image.c:2314 #: ../libvips/iofuncs/image.c:2147 ../libvips/iofuncs/image.c:2315
msgid "image not readable" msgid "image not readable"
msgstr "" msgstr ""
#: ../libvips/iofuncs/image.c:2168 ../libvips/iofuncs/image.c:2344 #: ../libvips/iofuncs/image.c:2168 ../libvips/iofuncs/image.c:2345
#: ../libvips/iofuncs/image.c:2353 #: ../libvips/iofuncs/image.c:2354
msgid "image already written" msgid "image already written"
msgstr "" msgstr ""
#: ../libvips/iofuncs/image.c:2192 ../libvips/iofuncs/image.c:2365 #: ../libvips/iofuncs/image.c:2192 ../libvips/iofuncs/image.c:2366
msgid "image not writeable" msgid "image not writeable"
msgstr "" msgstr ""
#: ../libvips/iofuncs/image.c:2238 #: ../libvips/iofuncs/image.c:2239
msgid "bad file type" msgid "bad file type"
msgstr "" msgstr ""
@ -2727,58 +2727,58 @@ msgstr ""
msgid "mask must be 1D" msgid "mask must be 1D"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:639 #: ../libvips/iofuncs/util.c:651
msgid "unable to get file stats" msgid "unable to get file stats"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:720 #: ../libvips/iofuncs/util.c:732
#, c-format #, c-format
msgid "unable to open file \"%s\" for reading" msgid "unable to open file \"%s\" for reading"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:742 #: ../libvips/iofuncs/util.c:754
#, c-format #, c-format
msgid "unable to open file \"%s\" for writing" msgid "unable to open file \"%s\" for writing"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:767 #: ../libvips/iofuncs/util.c:779
#, c-format #, c-format
msgid "\"%s\" too long" msgid "\"%s\" too long"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:784 #: ../libvips/iofuncs/util.c:796
msgid "out of memory" msgid "out of memory"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:810 #: ../libvips/iofuncs/util.c:822
#, c-format #, c-format
msgid "error reading from file \"%s\"" msgid "error reading from file \"%s\""
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:857 #: ../libvips/iofuncs/util.c:869
#, c-format #, c-format
msgid "write error (%zd out of %zd blocks written) ... disc full?" msgid "write error (%zd out of %zd blocks written) ... disc full?"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:1106 ../libvips/iofuncs/util.c:1113 #: ../libvips/iofuncs/util.c:1118 ../libvips/iofuncs/util.c:1125
msgid "unable to truncate" msgid "unable to truncate"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:1204 #: ../libvips/iofuncs/util.c:1216
#, c-format #, c-format
msgid "unable to create directory \"%s\", %s" msgid "unable to create directory \"%s\", %s"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:1338 #: ../libvips/iofuncs/util.c:1350
msgid "unexpected end of string" msgid "unexpected end of string"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:1356 #: ../libvips/iofuncs/util.c:1368
#, c-format #, c-format
msgid "expected %s, saw %s" msgid "expected %s, saw %s"
msgstr "" msgstr ""
#: ../libvips/iofuncs/util.c:1526 #: ../libvips/iofuncs/util.c:1538
#, c-format #, c-format
msgid "unable to make temporary file %s" msgid "unable to make temporary file %s"
msgstr "" msgstr ""
@ -2823,11 +2823,11 @@ msgstr ""
msgid "too much data" msgid "too much data"
msgstr "" msgstr ""
#: ../libvips/iofuncs/generate.c:640 #: ../libvips/iofuncs/generate.c:639
msgid "demand hint not set" msgid "demand hint not set"
msgstr "" msgstr ""
#: ../libvips/iofuncs/generate.c:659 ../libvips/iofuncs/generate.c:684 #: ../libvips/iofuncs/generate.c:658 ../libvips/iofuncs/generate.c:683
msgid "generate() called twice" msgid "generate() called twice"
msgstr "" msgstr ""
@ -2883,67 +2883,71 @@ msgstr ""
msgid "unable to mmap \"%s\" to same address" msgid "unable to mmap \"%s\" to same address"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:371 #: ../libvips/iofuncs/init.c:380
msgid "evaluate with N concurrent threads" msgid "evaluate with N concurrent threads"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:374 #: ../libvips/iofuncs/init.c:383
msgid "set tile width to N (DEBUG)" msgid "set tile width to N (DEBUG)"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:377 #: ../libvips/iofuncs/init.c:386
msgid "set tile height to N (DEBUG)" msgid "set tile height to N (DEBUG)"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:380 #: ../libvips/iofuncs/init.c:389
msgid "set thinstrip height to N (DEBUG)" msgid "set thinstrip height to N (DEBUG)"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:383 #: ../libvips/iofuncs/init.c:392
msgid "set fatstrip height to N (DEBUG)" msgid "set fatstrip height to N (DEBUG)"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:386 #: ../libvips/iofuncs/init.c:395
msgid "show progress feedback" msgid "show progress feedback"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:389 #: ../libvips/iofuncs/init.c:398
msgid "leak-check on exit" msgid "leak-check on exit"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:392 #: ../libvips/iofuncs/init.c:401
msgid "images larger than N are decompressed to disc" msgid "images larger than N are decompressed to disc"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:395 #: ../libvips/iofuncs/init.c:404
msgid "disable vectorised versions of operations" msgid "disable vectorised versions of operations"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:398 #: ../libvips/iofuncs/init.c:407
msgid "cache at most N operations" msgid "cache at most N operations"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:401 #: ../libvips/iofuncs/init.c:410
msgid "cache at most N bytes in memory" msgid "cache at most N bytes in memory"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:404 #: ../libvips/iofuncs/init.c:413
msgid "allow at most N open files" msgid "allow at most N open files"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:407 #: ../libvips/iofuncs/init.c:416
msgid "trace operation cache" msgid "trace operation cache"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:410 #: ../libvips/iofuncs/init.c:419
msgid "dump operation cache on exit" msgid "dump operation cache on exit"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:433 #: ../libvips/iofuncs/init.c:422
msgid "print libvips version"
msgstr ""
#: ../libvips/iofuncs/init.c:445
msgid "VIPS Options" msgid "VIPS Options"
msgstr "" msgstr ""
#: ../libvips/iofuncs/init.c:433 #: ../libvips/iofuncs/init.c:445
msgid "Show VIPS options" msgid "Show VIPS options"
msgstr "" msgstr ""
@ -3505,59 +3509,59 @@ msgstr ""
msgid "unknown action \"%s\"" msgid "unknown action \"%s\""
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:61 #: ../tools/vipsthumbnail.c:62
msgid "set thumbnail size to SIZE" msgid "set thumbnail size to SIZE"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:62 #: ../tools/vipsthumbnail.c:63
msgid "SIZE" msgid "SIZE"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:64 #: ../tools/vipsthumbnail.c:66
msgid "set output to FORMAT" msgid "set output to FORMAT"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:65 #: ../tools/vipsthumbnail.c:67
msgid "FORMAT" msgid "FORMAT"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:67 #: ../tools/vipsthumbnail.c:70
msgid "resample with INTERPOLATOR" msgid "resample with INTERPOLATOR"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:68 #: ../tools/vipsthumbnail.c:71
msgid "INTERPOLATOR" msgid "INTERPOLATOR"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:70 #: ../tools/vipsthumbnail.c:74
msgid "don't sharpen thumbnail" msgid "don't sharpen thumbnail"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:72 #: ../tools/vipsthumbnail.c:77
msgid "export with PROFILE" msgid "export with PROFILE"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:73 ../tools/vipsthumbnail.c:76 #: ../tools/vipsthumbnail.c:78 ../tools/vipsthumbnail.c:82
msgid "PROFILE" msgid "PROFILE"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:75 #: ../tools/vipsthumbnail.c:81
msgid "import untagged images with PROFILE" msgid "import untagged images with PROFILE"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:78 #: ../tools/vipsthumbnail.c:85
msgid "delete profile from exported image" msgid "delete profile from exported image"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:80 #: ../tools/vipsthumbnail.c:88
msgid "(deprecated, does nothing)" msgid "(deprecated, does nothing)"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:82 #: ../tools/vipsthumbnail.c:91
msgid "verbose output" msgid "verbose output"
msgstr "" msgstr ""
#: ../tools/vipsthumbnail.c:423 #: ../tools/vipsthumbnail.c:432
msgid "- thumbnail generator" msgid "- thumbnail generator"
msgstr "" msgstr ""

View File

@ -26,10 +26,10 @@ bin_SCRIPTS = \
batch_image_convert \ batch_image_convert \
batch_rubber_sheet \ batch_rubber_sheet \
batch_crop \ batch_crop \
vips-7.29 vips-7.30
EXTRA_DIST = \ EXTRA_DIST = \
vips-7.29 \ vips-7.30 \
light_correct.in \ light_correct.in \
shrink_width.in \ shrink_width.in \
batch_image_convert.in \ batch_image_convert.in \

View File

@ -57,28 +57,37 @@ static gboolean nodelete_profile = FALSE;
static gboolean verbose = FALSE; static gboolean verbose = FALSE;
static GOptionEntry options[] = { static GOptionEntry options[] = {
{ "size", 's', 0, G_OPTION_ARG_INT, &thumbnail_size, { "size", 's', 0,
G_OPTION_ARG_INT, &thumbnail_size,
N_( "set thumbnail size to SIZE" ), N_( "set thumbnail size to SIZE" ),
N_( "SIZE" ) }, N_( "SIZE" ) },
{ "output", 'o', 0, G_OPTION_ARG_STRING, &output_format, { "output", 'o', 0,
G_OPTION_ARG_STRING, &output_format,
N_( "set output to FORMAT" ), N_( "set output to FORMAT" ),
N_( "FORMAT" ) }, N_( "FORMAT" ) },
{ "interpolator", 'p', 0, G_OPTION_ARG_STRING, &interpolator, { "interpolator", 'p', 0,
G_OPTION_ARG_STRING, &interpolator,
N_( "resample with INTERPOLATOR" ), N_( "resample with INTERPOLATOR" ),
N_( "INTERPOLATOR" ) }, N_( "INTERPOLATOR" ) },
{ "nosharpen", 'n', 0, G_OPTION_ARG_NONE, &nosharpen, { "nosharpen", 'n', 0,
G_OPTION_ARG_NONE, &nosharpen,
N_( "don't sharpen thumbnail" ), NULL }, N_( "don't sharpen thumbnail" ), NULL },
{ "eprofile", 'e', 0, G_OPTION_ARG_STRING, &export_profile, { "eprofile", 'e', 0,
G_OPTION_ARG_STRING, &export_profile,
N_( "export with PROFILE" ), N_( "export with PROFILE" ),
N_( "PROFILE" ) }, N_( "PROFILE" ) },
{ "iprofile", 'i', 0, G_OPTION_ARG_STRING, &import_profile, { "iprofile", 'i', 0,
G_OPTION_ARG_STRING, &import_profile,
N_( "import untagged images with PROFILE" ), N_( "import untagged images with PROFILE" ),
N_( "PROFILE" ) }, N_( "PROFILE" ) },
{ "delete", 'd', 0, G_OPTION_ARG_NONE, &delete_profile, { "delete", 'd', 0,
G_OPTION_ARG_NONE, &delete_profile,
N_( "delete profile from exported image" ), NULL }, N_( "delete profile from exported image" ), NULL },
{ "nodelete", 'l', 0, G_OPTION_ARG_NONE, &nodelete_profile, { "nodelete", 'l', G_OPTION_FLAG_HIDDEN,
G_OPTION_ARG_NONE, &nodelete_profile,
N_( "(deprecated, does nothing)" ), NULL }, N_( "(deprecated, does nothing)" ), NULL },
{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, { "verbose", 'v', 0,
G_OPTION_ARG_NONE, &verbose,
N_( "verbose output" ), NULL }, N_( "verbose output" ), NULL },
{ NULL } { NULL }
}; };