This commit is contained in:
John Cupitt 2010-01-14 22:07:07 +00:00
parent fe42882030
commit 2f0a6ab66b
15 changed files with 147 additions and 103 deletions

View File

@ -18,6 +18,7 @@
- read TIFF images strip-wise, not scanline-wise - read TIFF images strip-wise, not scanline-wise
- better TIFF YCbCr reading (thanks Ole) - better TIFF YCbCr reading (thanks Ole)
- isanalyze generates fewer silly error messages - isanalyze generates fewer silly error messages
- added "written" callbacks, used to implement write to non-vips formats
26/11/09 started 7.20.3 26/11/09 started 7.20.3
- updated en_GB.po translation - updated en_GB.po translation

2
TODO
View File

@ -1,3 +1,5 @@
- test new floodfill in paintbox
- we sill have the old flood-fill code there, move to deprecated - we sill have the old flood-fill code there, move to deprecated
should we have new API? we could have a single "im_floodfill" that allows should we have new API? we could have a single "im_floodfill" that allows

View File

@ -107,7 +107,7 @@ system_image_vec( im_object *argv )
return( -1 ); return( -1 );
} }
if( im_copy_file( out_image, out ) || if( im_copy( out_image, out ) ||
im_add_close_callback( out, im_add_close_callback( out,
(im_callback_fn) im_close, out_image, NULL ) ) { (im_callback_fn) im_close, out_image, NULL ) ) {
im_close( out_image ); im_close( out_image );

View File

@ -71,22 +71,8 @@ system_image( IMAGE *im,
VipsBuf buf = VIPS_BUF_STATIC( txt ); VipsBuf buf = VIPS_BUF_STATIC( txt );
int result; int result;
/* We have to generate the comnmand-line before we close in_image. if( im_copy( im, in_image ) ||
*/ !(fp = im_popenf( cmd_format, "r", in_name, out_name )) )
im_snprintf( line, IM_MAX_STRSIZE, cmd_format, in_name, out_name );
/* in_image usually needs to be closed before it'll write. Argh! And
* it'll be deleted on close too. skdaljfhaslkdf
*
* Perhaps we should do -write-on-close earlier? evalend? Or a new
* signal which im_generate() can emit when it connects to an image?
*/
if( im_copy( im, in_image ) ) {
im_close( in_image );
return( -1 );
}
if( im_close( in_image ) ||
!(fp = im_popenf( "%s", "r", line )) )
return( -1 ); return( -1 );
while( fgets( line, IM_MAX_STRSIZE, fp ) ) while( fgets( line, IM_MAX_STRSIZE, fp ) )
@ -98,7 +84,7 @@ system_image( IMAGE *im,
if( log ) if( log )
*log = im_strdup( NULL, vips_buf_all( &buf ) ); *log = im_strdup( NULL, vips_buf_all( &buf ) );
if( result ) { if( !result ) {
IMAGE *t; IMAGE *t;
if( !(t = im_open_local( out_image, out_name, "r" )) || if( !(t = im_open_local( out_image, out_name, "r" )) ||
@ -156,9 +142,11 @@ im_system_image( IMAGE *im,
if( system_image( im, in_image, out_image, cmd_format, log ) ) { if( system_image( im, in_image, out_image, cmd_format, log ) ) {
im_close( out_image ); im_close( out_image );
im_close( in_image );
return( NULL ); return( NULL );
} }
im_close( in_image );
return( out_image ); return( out_image );
} }

View File

@ -42,6 +42,8 @@ int im_add_close_callback( IMAGE *im, im_callback_fn fn, void *a, void *b );
int im_add_preclose_callback( IMAGE *im, im_callback_fn fn, void *a, void *b ); int im_add_preclose_callback( IMAGE *im, im_callback_fn fn, void *a, void *b );
int im_add_postclose_callback( IMAGE *im, im_callback_fn fn, void *a, void *b ); int im_add_postclose_callback( IMAGE *im, im_callback_fn fn, void *a, void *b );
int im_add_written_callback( IMAGE *im, im_callback_fn fn, void *a, void *b );
int im_add_evalstart_callback( IMAGE *im, im_callback_fn fn, void *a, void *b ); int im_add_evalstart_callback( IMAGE *im, im_callback_fn fn, void *a, void *b );
int im_add_eval_callback( IMAGE *im, im_callback_fn fn, void *a, void *b ); int im_add_eval_callback( IMAGE *im, im_callback_fn fn, void *a, void *b );
int im_add_evalend_callback( IMAGE *im, im_callback_fn fn, void *a, void *b ); int im_add_evalend_callback( IMAGE *im, im_callback_fn fn, void *a, void *b );

View File

@ -218,7 +218,7 @@ typedef struct _VipsImage {
*/ */
struct _VipsImage *progress; struct _VipsImage *progress;
/* Some more callbacks. Appended to IMAGE for binary compatibility. /* Some more callbacks.
*/ */
GSList *evalstartfns; /* list of start eval callbacks */ GSList *evalstartfns; /* list of start eval callbacks */
GSList *preclosefns; /* list of pre-close callbacks */ GSList *preclosefns; /* list of pre-close callbacks */
@ -245,6 +245,11 @@ typedef struct _VipsImage {
* associated with this temp image. * associated with this temp image.
*/ */
GSList *postclosefns; GSList *postclosefns;
/* Written callbacks are triggered when an image has been written to.
* Used by eg. im_open("x.jpg", "w") to do the final write to jpeg.
*/
GSList *writtenfns;
} VipsImage; } VipsImage;
extern const size_t im__sizeof_bandfmt[]; extern const size_t im__sizeof_bandfmt[];

View File

@ -174,6 +174,33 @@ im_add_preclose_callback( IMAGE *im, im_callback_fn fn, void *a, void *b )
return( add_callback( im, &im->preclosefns, fn, a, b ) ); return( add_callback( im, &im->preclosefns, fn, a, b ) );
} }
/**
* im_add_written_callback:
* @im: image to attach callback to
* @fn: callback function
* @a: user data 1
* @b: user data 2
*
* Attaches a written callback @fn to @im.
*
* Written callbacks are triggered exactly once, just after @im has been
* written to.
*
* Written callbacks are a good place to do background writes to files. VIPS
* uses them to implement (for example) writing to im_open("poop.jpg","w")
* triggering a write to jpeg.
*
* Evalend callbacks happen after a real write loop, whereas written is
* triggered even for just attaching some callbacks to a "p" image.
*
* Returns: 0 on success, or -1 on error.
*/
int
im_add_written_callback( IMAGE *im, im_callback_fn fn, void *a, void *b )
{
return( add_callback( im, &im->writtenfns, fn, a, b ) );
}
/** /**
* im_add_eval_callback: * im_add_eval_callback:
* @im: image to attach callback to * @im: image to attach callback to

View File

@ -399,6 +399,8 @@ im_printdesc( IMAGE *image )
printf( "close callbacks attached\n" ); printf( "close callbacks attached\n" );
if( image->postclosefns ) if( image->postclosefns )
printf( "postclose callbacks attached\n" ); printf( "postclose callbacks attached\n" );
if( image->writtenfns )
printf( "written callbacks attached\n" );
if( image->evalfns ) if( image->evalfns )
printf( "eval callbacks attached\n" ); printf( "eval callbacks attached\n" );
if( image->evalendfns ) if( image->evalendfns )

View File

@ -52,6 +52,8 @@
* - gtkdoc comment * - gtkdoc comment
* 10/1/09 * 10/1/09
* - added postclose * - added postclose
* 14/1/09
* - added written
*/ */
/* /*
@ -225,6 +227,7 @@ im__close( IMAGE *im )
IM_FREEF( im_slist_free_all, im->evalfns ); IM_FREEF( im_slist_free_all, im->evalfns );
IM_FREEF( im_slist_free_all, im->evalendfns ); IM_FREEF( im_slist_free_all, im->evalendfns );
IM_FREEF( im_slist_free_all, im->invalidatefns ); IM_FREEF( im_slist_free_all, im->invalidatefns );
IM_FREEF( im_slist_free_all, im->writtenfns );
result |= im__trigger_callbacks( im->closefns ); result |= im__trigger_callbacks( im->closefns );
IM_FREEF( im_slist_free_all, im->closefns ); IM_FREEF( im_slist_free_all, im->closefns );

View File

@ -629,7 +629,12 @@ im_generate( IMAGE *im,
im_dtype2char( im->dtype ) ); im_dtype2char( im->dtype ) );
return( -1 ); return( -1 );
} }
/* Successful write: trigger "written".
*/
if( im__trigger_callbacks( im->writtenfns ) )
return( -1 );
return( 0 ); return( 0 );
} }

View File

@ -94,6 +94,8 @@ Modified:
* - lock global image list (thanks lee) * - lock global image list (thanks lee)
* 25/5/08 * 25/5/08
* - break file format stuff out to the new pluggable image format system * - break file format stuff out to the new pluggable image format system
* 14/1/09
* - write to non-vips formats with a "written" callback
*/ */
/* /*
@ -148,8 +150,8 @@ Modified:
*/ */
int im__progress = 0; int im__progress = 0;
/* Delayed save: if we write to TIFF or to JPEG format, actually do the write /* Delayed save: if we write to (eg.) TIFF, actually do the write
* to a "p" and on preclose do im_vips2tiff() or whatever. Track save * to a "p" and on "written" do im_vips2tiff() or whatever. Track save
* parameters here. * parameters here.
*/ */
typedef struct { typedef struct {
@ -158,7 +160,7 @@ typedef struct {
char *filename; /* Save args */ char *filename; /* Save args */
} SaveBlock; } SaveBlock;
/* From preclose callback: invoke a delayed save. /* From "written" callback: invoke a delayed save.
*/ */
static int static int
invoke_sb( SaveBlock *sb ) invoke_sb( SaveBlock *sb )
@ -182,7 +184,7 @@ attach_sb( IMAGE *out, int (*save_fn)(), const char *filename )
sb->save_fn = save_fn; sb->save_fn = save_fn;
sb->filename = im_strdup( out, filename ); sb->filename = im_strdup( out, filename );
if( im_add_preclose_callback( out, if( im_add_written_callback( out,
(im_callback_fn) invoke_sb, (void *) sb, NULL ) ) (im_callback_fn) invoke_sb, (void *) sb, NULL ) )
return( -1 ); return( -1 );

View File

@ -124,8 +124,11 @@ im_writeline( int ypos, IMAGE *im, PEL *linebuffer )
/* Is this the end of eval? /* Is this the end of eval?
*/ */
if( ypos == im->Ysize - 1 ) if( ypos == im->Ysize - 1 ) {
im__end_eval( im ); if( im__end_eval( im ) ||
im__trigger_callbacks( im->writtenfns ) )
return( -1 );
}
return( 0 ); return( 0 );
} }

View File

@ -34,6 +34,8 @@
* - add set_hint * - add set_hint
* 10/1/09 * 10/1/09
* - added postclose * - added postclose
* 14/1/09
* - added writtenfns
*/ */
/* /*
@ -176,6 +178,7 @@ im_init( const char *filename )
im->hint_set = FALSE; im->hint_set = FALSE;
im->postclosefns = NULL; im->postclosefns = NULL;
im->writtenfns = NULL;
if( !(im->filename = im_strdup( NULL, filename )) ) { if( !(im->filename = im_strdup( NULL, filename )) ) {
im_close( im ); im_close( im );

Binary file not shown.

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: vips 7.20.0\n" "Project-Id-Version: vips 7.20.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-11-27 14:51+0000\n" "POT-Creation-Date: 2010-01-14 21:04+0000\n"
"PO-Revision-Date: Thu Nov 26 12:08:20 GMT 2009\n" "PO-Revision-Date: Thu Nov 26 12:08:20 GMT 2009\n"
"Last-Translator: john <jcupitt@gmail.com>\n" "Last-Translator: john <jcupitt@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -210,7 +210,6 @@ msgstr ""
#. Name #. Name
#: libvips/arithmetic/arith_dispatch.c:1228 #: libvips/arithmetic/arith_dispatch.c:1228
#: libvips/deprecated/deprecated_dispatch.c:384
msgid "remainder after integer division by a vector of constants" msgid "remainder after integer division by a vector of constants"
msgstr "" msgstr ""
@ -249,12 +248,12 @@ msgstr ""
msgid "phase of cross power spectrum of two complex images" msgid "phase of cross power spectrum of two complex images"
msgstr "" msgstr ""
#: libvips/arithmetic/im_measure.c:90 #: libvips/arithmetic/im_measure.c:95
#, c-format #, c-format
msgid "patch %d is out of range" msgid "patch %d is out of range"
msgstr "" msgstr ""
#: libvips/arithmetic/im_measure.c:131 #: libvips/arithmetic/im_measure.c:136
#, c-format #, c-format
msgid "patch %d, band %d: avg = %g, sdev = %g" msgid "patch %d, band %d: avg = %g, sdev = %g"
msgstr "" msgstr ""
@ -294,7 +293,7 @@ msgstr ""
msgid "bands in must equal matrix width" msgid "bands in must equal matrix width"
msgstr "" msgstr ""
#: libvips/colour/im_XYZ2disp.c:142 #: libvips/colour/im_XYZ2disp.c:143
msgid "3-band uncoded float only" msgid "3-band uncoded float only"
msgstr "" msgstr ""
@ -303,79 +302,78 @@ msgid "lcms library not linked to this VIPS"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:79 libvips/colour/im_icc_transform.c:88 #: libvips/colour/im_icc_transform.c:79 libvips/colour/im_icc_transform.c:88
#: libvips/colour/im_icc_transform.c:98 libvips/colour/im_icc_transform.c:108 #: libvips/colour/im_icc_transform.c:98 libvips/colour/im_icc_transform.c:107
#: libvips/colour/im_icc_transform.c:117
msgid "lmcs library not linked to this VIPS" msgid "lmcs library not linked to this VIPS"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:273 libvips/colour/im_icc_transform.c:283 #: libvips/colour/im_icc_transform.c:263 libvips/colour/im_icc_transform.c:273
#, c-format #, c-format
msgid "unable to open profile \"%s\"" msgid "unable to open profile \"%s\""
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:294 #: libvips/colour/im_icc_transform.c:284
msgid "unable to create profiles" msgid "unable to create profiles"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:313 #: libvips/colour/im_icc_transform.c:303
msgid "unable to read profile" msgid "unable to read profile"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:436 libvips/colour/im_icc_transform.c:445 #: libvips/colour/im_icc_transform.c:426 libvips/colour/im_icc_transform.c:435
#: libvips/colour/im_icc_transform.c:784 #: libvips/colour/im_icc_transform.c:774
#, c-format #, c-format
msgid "" msgid ""
"intent %d (%s) not supported by profile \"%s\"; falling back to default " "intent %d (%s) not supported by profile \"%s\"; falling back to default "
"intent (usually PERCEPTUAL)" "intent (usually PERCEPTUAL)"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:455 #: libvips/colour/im_icc_transform.c:445
msgid "CMYK input profile needs a 4 band input image" msgid "CMYK input profile needs a 4 band input image"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:465 #: libvips/colour/im_icc_transform.c:455
msgid "RGB input profile needs a 3 band input image" msgid "RGB input profile needs a 3 band input image"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:474 libvips/colour/im_icc_transform.c:604 #: libvips/colour/im_icc_transform.c:464 libvips/colour/im_icc_transform.c:594
#, fuzzy, c-format #, fuzzy, c-format
msgid "unimplemented input colour space 0x%x" msgid "unimplemented input colour space 0x%x"
msgstr "unsupported colourspace %d" msgstr "unsupported colourspace %d"
#: libvips/colour/im_icc_transform.c:501 libvips/colour/im_icc_transform.c:814 #: libvips/colour/im_icc_transform.c:491 libvips/colour/im_icc_transform.c:804
#, fuzzy, c-format #, fuzzy, c-format
msgid "unimplemented output colour space 0x%x" msgid "unimplemented output colour space 0x%x"
msgstr "unsupported colourspace %d" msgstr "unsupported colourspace %d"
#: libvips/colour/im_icc_transform.c:517 libvips/colour/im_icc_transform.c:620 #: libvips/colour/im_icc_transform.c:507 libvips/colour/im_icc_transform.c:610
msgid "uchar or ushort input only" msgid "uchar or ushort input only"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:569 #: libvips/colour/im_icc_transform.c:559
#, c-format #, c-format
msgid "" msgid ""
"intent %d (%s) not supported by profile; falling back to default intent " "intent %d (%s) not supported by profile; falling back to default intent "
"(usually PERCEPTUAL)" "(usually PERCEPTUAL)"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:586 #: libvips/colour/im_icc_transform.c:576
msgid "CMYK profile needs a 4 band input image" msgid "CMYK profile needs a 4 band input image"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:596 #: libvips/colour/im_icc_transform.c:586
msgid "RGB profile needs a 3 band input image" msgid "RGB profile needs a 3 band input image"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:687 #: libvips/colour/im_icc_transform.c:677
msgid "no embedded profile" msgid "no embedded profile"
msgstr "" msgstr ""
#: libvips/colour/im_icc_transform.c:773 #: libvips/colour/im_icc_transform.c:763
#, fuzzy #, fuzzy
msgid "unsupported bit depth" msgid "unsupported bit depth"
msgstr "unsupported colourspace %d" msgstr "unsupported colourspace %d"
#: libvips/colour/im_icc_transform.c:862 #: libvips/colour/im_icc_transform.c:852
msgid "unable to get media white point" msgid "unable to get media white point"
msgstr "" msgstr ""
@ -404,20 +402,20 @@ msgstr ""
msgid "not a LabQ image" msgid "not a LabQ image"
msgstr "" msgstr ""
#: libvips/colour/disp.c:410 #: libvips/colour/disp.c:412
msgid "out of range [0,255]" msgid "out of range [0,255]"
msgstr "" msgstr ""
#: libvips/colour/disp.c:436 #: libvips/colour/disp.c:438
msgid "bad display type" msgid "bad display type"
msgstr "" msgstr ""
#: libvips/colour/disp.c:550 #: libvips/colour/disp.c:552
msgid "display unknown" msgid "display unknown"
msgstr "" msgstr ""
#: libvips/conversion/im_zoom.c:332 libvips/format/im_vips2tiff.c:1589 #: libvips/conversion/im_zoom.c:332 libvips/format/im_vips2tiff.c:1589
#: libvips/format/im_file2vips.c:761 libvips/iofuncs/im_open_vips.c:1320 #: libvips/format/im_file2vips.c:761 libvips/iofuncs/im_open_vips.c:1267
#: libvips/mosaicing/im_tbmerge.c:634 libvips/mosaicing/im_lrmerge.c:812 #: libvips/mosaicing/im_tbmerge.c:634 libvips/mosaicing/im_lrmerge.c:812
#: libvips/resample/im_shrink.c:318 libvips/resample/im_affine.c:442 #: libvips/resample/im_shrink.c:318 libvips/resample/im_affine.c:442
msgid "unknown coding type" msgid "unknown coding type"
@ -487,8 +485,8 @@ msgstr ""
msgid "only extract areas from LABQ and RAD" msgid "only extract areas from LABQ and RAD"
msgstr "" msgstr ""
#: libvips/conversion/conver_dispatch.c:944 #: libvips/conversion/conver_dispatch.c:991
#: libvips/deprecated/deprecated_dispatch.c:864 #: libvips/deprecated/deprecated_dispatch.c:834
#: libvips/inplace/inplace_dispatch.c:146 #: libvips/inplace/inplace_dispatch.c:146
msgid "vectors not same length" msgid "vectors not same length"
msgstr "" msgstr ""
@ -688,7 +686,7 @@ msgstr ""
msgid "parameters would result in zero size output image" msgid "parameters would result in zero size output image"
msgstr "" msgstr ""
#: libvips/deprecated/im_bernd.c:72 libvips/format/im_vips2jpeg.c:891 #: libvips/deprecated/im_bernd.c:72 libvips/format/im_vips2jpeg.c:892
msgid "error writing output" msgid "error writing output"
msgstr "" msgstr ""
@ -895,7 +893,7 @@ msgstr ""
msgid "CSV" msgid "CSV"
msgstr "" msgstr ""
#: libvips/format/im_vips2tiff.c:154 libvips/format/im_tiff2vips.c:154 #: libvips/format/im_vips2tiff.c:154 libvips/format/im_tiff2vips.c:159
msgid "TIFF support disabled" msgid "TIFF support disabled"
msgstr "" msgstr ""
@ -904,7 +902,7 @@ msgstr ""
msgid "unable to open \"%s\" for output" msgid "unable to open \"%s\" for output"
msgstr "" msgstr ""
#: libvips/format/im_vips2tiff.c:282 libvips/format/im_tiff2vips.c:1395 #: libvips/format/im_vips2tiff.c:282 libvips/format/im_tiff2vips.c:1388
#, c-format #, c-format
msgid "unable to open \"%s\" for input" msgid "unable to open \"%s\" for input"
msgstr "" msgstr ""
@ -1008,7 +1006,7 @@ msgstr ""
msgid "error reading radiance header" msgid "error reading radiance header"
msgstr "" msgstr ""
#: libvips/format/radiance.c:966 libvips/format/im_tiff2vips.c:1311 #: libvips/format/radiance.c:966 libvips/format/im_tiff2vips.c:1300
msgid "read error" msgid "read error"
msgstr "" msgstr ""
@ -1070,20 +1068,20 @@ msgstr ""
msgid "\"%s\" is not a supported image format." msgid "\"%s\" is not a supported image format."
msgstr "" msgstr ""
#: libvips/format/im_analyze2vips.c:371 #: libvips/format/im_analyze2vips.c:315
msgid "header file size incorrect"
msgstr ""
#: libvips/format/im_analyze2vips.c:375
#, c-format #, c-format
msgid "%d-dimensional images not supported" msgid "%d-dimensional images not supported"
msgstr "" msgstr ""
#: libvips/format/im_analyze2vips.c:424 #: libvips/format/im_analyze2vips.c:428
#, c-format #, c-format
msgid "datatype %d not supported" msgid "datatype %d not supported"
msgstr "" msgstr ""
#: libvips/format/im_analyze2vips.c:525 libvips/format/im_analyze2vips.c:565
msgid "header file size incorrect"
msgstr ""
#: libvips/format/im_analyze2vips.c:608 #: libvips/format/im_analyze2vips.c:608
msgid "Analyze 6.0" msgid "Analyze 6.0"
msgstr "" msgstr ""
@ -1136,43 +1134,43 @@ msgid "1 or 3 band images only"
msgstr "" msgstr ""
#: libvips/format/im_file2vips.c:125 libvips/format/im_file2vips.c:643 #: libvips/format/im_file2vips.c:125 libvips/format/im_file2vips.c:643
#: libvips/iofuncs/im_open_vips.c:368 #: libvips/iofuncs/im_open_vips.c:362
#, c-format #, c-format
msgid "unable to open \"%s\", %s" msgid "unable to open \"%s\", %s"
msgstr "" msgstr ""
#: libvips/format/im_file2vips.c:253 libvips/iofuncs/im_open_vips.c:496 #: libvips/format/im_file2vips.c:253 libvips/iofuncs/im_open_vips.c:490
#, c-format #, c-format
msgid "\"%s\" is not a VIPS image" msgid "\"%s\" is not a VIPS image"
msgstr "" msgstr ""
#: libvips/format/im_file2vips.c:313 libvips/iofuncs/im_open_vips.c:556 #: libvips/format/im_file2vips.c:313 libvips/iofuncs/im_open_vips.c:550
msgid "unable to read history" msgid "unable to read history"
msgstr "" msgstr ""
#: libvips/format/im_file2vips.c:350 libvips/iofuncs/im_open_vips.c:589 #: libvips/format/im_file2vips.c:350 libvips/iofuncs/im_open_vips.c:583
msgid "more than a 10 megabytes of XML? sufferin' succotash!" msgid "more than a 10 megabytes of XML? sufferin' succotash!"
msgstr "" msgstr ""
#: libvips/format/im_file2vips.c:397 libvips/iofuncs/im_open_vips.c:637 #: libvips/format/im_file2vips.c:397 libvips/iofuncs/im_open_vips.c:631
msgid "incorrect namespace in XML" msgid "incorrect namespace in XML"
msgstr "" msgstr ""
#: libvips/format/im_file2vips.c:518 libvips/iofuncs/im_open_vips.c:761 #: libvips/format/im_file2vips.c:518 libvips/iofuncs/im_open_vips.c:755
msgid "error transforming from save format" msgid "error transforming from save format"
msgstr "" msgstr ""
#: libvips/format/im_file2vips.c:632 libvips/iofuncs/im_open_vips.c:1147 #: libvips/format/im_file2vips.c:632 libvips/iofuncs/im_open_vips.c:1141
#, c-format #, c-format
msgid "unable to read header for \"%s\", %s" msgid "unable to read header for \"%s\", %s"
msgstr "" msgstr ""
#: libvips/format/im_file2vips.c:644 libvips/iofuncs/window.c:237 #: libvips/format/im_file2vips.c:644 libvips/iofuncs/window.c:241
#: libvips/iofuncs/im_open_vips.c:965 libvips/iofuncs/im_open_vips.c:1160 #: libvips/iofuncs/im_open_vips.c:959 libvips/iofuncs/im_open_vips.c:1155
msgid "file has been truncated" msgid "file has been truncated"
msgstr "" msgstr ""
#: libvips/format/im_file2vips.c:657 libvips/iofuncs/im_open_vips.c:1171 #: libvips/format/im_file2vips.c:657 libvips/iofuncs/im_open_vips.c:1166
#, c-format #, c-format
msgid "error reading XML: %s" msgid "error reading XML: %s"
msgstr "" msgstr ""
@ -1255,86 +1253,86 @@ msgstr ""
msgid "OpenEXR" msgid "OpenEXR"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:267 libvips/format/im_tiff2vips.c:290 #: libvips/format/im_tiff2vips.c:272 libvips/format/im_tiff2vips.c:295
#: libvips/format/im_tiff2vips.c:309 #: libvips/format/im_tiff2vips.c:314
#, c-format #, c-format
msgid "required field %d missing" msgid "required field %d missing"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:271 #: libvips/format/im_tiff2vips.c:276
#, c-format #, c-format
msgid "required field %d=%d, not %d" msgid "required field %d=%d, not %d"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:673 #: libvips/format/im_tiff2vips.c:640
msgid "bad colormap" msgid "bad colormap"
msgstr "bad colourmap" msgstr "bad colourmap"
#: libvips/format/im_tiff2vips.c:727 libvips/format/im_tiff2vips.c:775 #: libvips/format/im_tiff2vips.c:694 libvips/format/im_tiff2vips.c:742
msgid "3 or 4 bands RGB TIFF only" msgid "3 or 4 bands RGB TIFF only"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:863 #: libvips/format/im_tiff2vips.c:830
msgid "4 or 5 bands CMYK TIFF only" msgid "4 or 5 bands CMYK TIFF only"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:913 #: libvips/format/im_tiff2vips.c:880
msgid "unknown resolution unit" msgid "unknown resolution unit"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:918 #: libvips/format/im_tiff2vips.c:885
#, c-format #, c-format
msgid "" msgid ""
"no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per " "no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per "
"mm" "mm"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:985 #: libvips/format/im_tiff2vips.c:952
#, c-format #, c-format
msgid "unsupported sample format %d for lab image" msgid "unsupported sample format %d for lab image"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:995 #: libvips/format/im_tiff2vips.c:962
#, c-format #, c-format
msgid "unsupported depth %d for LAB image" msgid "unsupported depth %d for LAB image"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:1042 #: libvips/format/im_tiff2vips.c:1001
#, c-format #, c-format
msgid "unsupported sample format %d for greyscale image" msgid "unsupported sample format %d for greyscale image"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:1051 #: libvips/format/im_tiff2vips.c:1010
#, c-format #, c-format
msgid "unsupported depth %d for greyscale image" msgid "unsupported depth %d for greyscale image"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:1091 #: libvips/format/im_tiff2vips.c:1058
#, c-format #, c-format
msgid "unsupported sample format %d for rgb image" msgid "unsupported sample format %d for rgb image"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:1100 #: libvips/format/im_tiff2vips.c:1067
#, c-format #, c-format
msgid "unsupported depth %d for RGB image" msgid "unsupported depth %d for RGB image"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:1114 #: libvips/format/im_tiff2vips.c:1081
#, c-format #, c-format
msgid "unknown photometric interpretation %d" msgid "unknown photometric interpretation %d"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:1373 #: libvips/format/im_tiff2vips.c:1366
#, c-format #, c-format
msgid "bad page number %d" msgid "bad page number %d"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:1449 libvips/format/im_tiff2vips.c:1481 #: libvips/format/im_tiff2vips.c:1442 libvips/format/im_tiff2vips.c:1474
#, c-format #, c-format
msgid "TIFF file does not contain page %d" msgid "TIFF file does not contain page %d"
msgstr "" msgstr ""
#: libvips/format/im_tiff2vips.c:1556 #: libvips/format/im_tiff2vips.c:1549
msgid "TIFF" msgid "TIFF"
msgstr "" msgstr ""
@ -1666,6 +1664,9 @@ msgid "internal error"
msgstr "" msgstr ""
#: libvips/inplace/inplace_dispatch.c:216 #: libvips/inplace/inplace_dispatch.c:216
#: libvips/inplace/inplace_dispatch.c:261
#: libvips/inplace/inplace_dispatch.c:306
#: libvips/inplace/inplace_dispatch.c:351
msgid "bad vector length" msgid "bad vector length"
msgstr "" msgstr ""
@ -1676,7 +1677,7 @@ msgstr ""
msgid "unable to output to a %s image" msgid "unable to output to a %s image"
msgstr "" msgstr ""
#: libvips/iofuncs/window.c:236 libvips/iofuncs/im_open_vips.c:1159 #: libvips/iofuncs/window.c:240 libvips/iofuncs/im_open_vips.c:1154
#, c-format #, c-format
msgid "unable to read data for \"%s\", %s" msgid "unable to read data for \"%s\", %s"
msgstr "" msgstr ""
@ -1768,12 +1769,12 @@ msgstr ""
msgid "expected %s, saw %s" msgid "expected %s, saw %s"
msgstr "" msgstr ""
#: libvips/iofuncs/util.c:1497 #: libvips/iofuncs/util.c:1538
#, c-format #, c-format
msgid "unable to make temp file %s" msgid "unable to make temporary file %s"
msgstr "" msgstr ""
#: libvips/iofuncs/util.c:1542 #: libvips/iofuncs/util.c:1601
#, fuzzy, c-format #, fuzzy, c-format
msgid "unsupported band format: %d" msgid "unsupported band format: %d"
msgstr "unsupported colourspace %d" msgstr "unsupported colourspace %d"
@ -1856,7 +1857,7 @@ msgstr ""
msgid "flag not 0,1,2" msgid "flag not 0,1,2"
msgstr "" msgstr ""
#: libvips/iofuncs/im_close.c:197 #: libvips/iofuncs/im_close.c:199
#, c-format #, c-format
msgid "unable to close fd for %s" msgid "unable to close fd for %s"
msgstr "" msgstr ""
@ -1955,21 +1956,21 @@ msgstr ""
msgid "Show VIPS options" msgid "Show VIPS options"
msgstr "" msgstr ""
#: libvips/iofuncs/im_open_vips.c:869 #: libvips/iofuncs/im_open_vips.c:863
#, c-format #, c-format
msgid "unable to set property \"%s\" to value \"%s\"." msgid "unable to set property \"%s\" to value \"%s\"."
msgstr "" msgstr ""
#: libvips/iofuncs/im_open_vips.c:917 #: libvips/iofuncs/im_open_vips.c:911
msgid "error transforming to save format" msgid "error transforming to save format"
msgstr "" msgstr ""
#: libvips/iofuncs/im_open_vips.c:1079 libvips/iofuncs/im_open_vips.c:1088 #: libvips/iofuncs/im_open_vips.c:1073 libvips/iofuncs/im_open_vips.c:1082
#: libvips/iofuncs/im_open_vips.c:1111 #: libvips/iofuncs/im_open_vips.c:1105
msgid "xml save error" msgid "xml save error"
msgstr "" msgstr ""
#: libvips/iofuncs/im_open_vips.c:1270 #: libvips/iofuncs/im_open_vips.c:1217
msgid "open for read-write for native format images only" msgid "open for read-write for native format images only"
msgstr "" msgstr ""