record the image loader
and display in header too
This commit is contained in:
parent
ad2156a6d2
commit
2d085f753b
@ -3,6 +3,8 @@
|
||||
raised an error (thanks Todd)
|
||||
- fix another dzsave corner-case (thanks Martin)
|
||||
- neater output for "header"
|
||||
- added VIPS_META_LOADER: record the loader name
|
||||
= header displays this hint
|
||||
|
||||
31/8/12 started 7.31.0
|
||||
- redone im_Lab2XYZ(), im_XYZ2Lab(), im_Lab2LCh(), im_LCh2Lab(), im_UCS2LCh,
|
||||
|
@ -850,6 +850,9 @@ vips_foreign_load_build( VipsObject *object )
|
||||
|
||||
g_object_set( object, "out", vips_image_new(), NULL );
|
||||
|
||||
vips_image_set_string( load->out,
|
||||
VIPS_META_LOADER, class->nickname );
|
||||
|
||||
#ifdef DEBUG
|
||||
printf( "vips_foreign_load_build: triggering ->header()\n" );
|
||||
#endif /*DEBUG*/
|
||||
|
@ -84,6 +84,14 @@ extern "C" {
|
||||
*/
|
||||
#define VIPS_META_RESOLUTION_UNIT "resolution-unit"
|
||||
|
||||
/**
|
||||
* VIPS_META_LOADER:
|
||||
*
|
||||
* Record the name of the original loader here. Handy for hinting file formats
|
||||
* and for debugging.
|
||||
*/
|
||||
#define VIPS_META_LOADER "vips-loader"
|
||||
|
||||
guint64 vips_format_sizeof( VipsBandFormat format );
|
||||
|
||||
int vips_image_get_width( const VipsImage *image );
|
||||
|
@ -395,6 +395,7 @@ static void
|
||||
vips_image_summary( VipsObject *object, VipsBuf *buf )
|
||||
{
|
||||
VipsImage *image = VIPS_IMAGE( object );
|
||||
char *p;
|
||||
|
||||
vips_buf_appendf( buf, "%dx%d",
|
||||
vips_image_get_width( image ), vips_image_get_height( image ) );
|
||||
@ -416,6 +417,10 @@ vips_image_summary( VipsObject *object, VipsBuf *buf )
|
||||
vips_image_get_coding( image ) ) );
|
||||
}
|
||||
|
||||
if( vips_image_get_typeof( image, VIPS_META_LOADER ) &&
|
||||
!vips_image_get_string( image, VIPS_META_LOADER, &p ) )
|
||||
vips_buf_appendf( buf, ", %s", p );
|
||||
|
||||
VIPS_OBJECT_CLASS( vips_image_parent_class )->summary( object, buf );
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,8 @@
|
||||
* 6/11/09
|
||||
* - added im_history_get(), im_getexp(), im_printdesc() as wrapped
|
||||
* functions, so "header" is now obsolete
|
||||
* 27/2/13
|
||||
* - convert to vips8 API
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -95,8 +97,8 @@ static GOptionEntry main_option[] = {
|
||||
static void
|
||||
print_error( void )
|
||||
{
|
||||
fprintf( stderr, "%s: %s", g_get_prgname(), im_error_buffer() );
|
||||
im_error_clear();
|
||||
fprintf( stderr, "%s: %s", g_get_prgname(), vips_error_buffer() );
|
||||
vips_error_clear();
|
||||
}
|
||||
|
||||
static void *
|
||||
@ -137,7 +139,7 @@ print_field_fn( VipsImage *image, const char *field, GValue *value, void *a )
|
||||
/* Print header, or parts of header.
|
||||
*/
|
||||
static int
|
||||
print_header( IMAGE *im, gboolean many )
|
||||
print_header( VipsImage *im, gboolean many )
|
||||
{
|
||||
if( !main_option_field ) {
|
||||
printf( "%s: ", im->filename );
|
||||
@ -148,47 +150,25 @@ print_header( IMAGE *im, gboolean many )
|
||||
(void) vips_image_map( im, print_field_fn, &many );
|
||||
}
|
||||
else if( strcmp( main_option_field, "getext" ) == 0 ) {
|
||||
if( im__has_extension_block( im ) ) {
|
||||
if( vips__has_extension_block( im ) ) {
|
||||
void *buf;
|
||||
int size;
|
||||
|
||||
if( !(buf = im__read_extension_block( im, &size )) )
|
||||
if( !(buf = vips__read_extension_block( im, &size )) )
|
||||
return( -1 );
|
||||
printf( "%s", (char *) buf );
|
||||
im_free( buf );
|
||||
g_free( buf );
|
||||
}
|
||||
}
|
||||
else if( strcmp( main_option_field, "Hist" ) == 0 )
|
||||
printf( "%s", im_history_get( im ) );
|
||||
printf( "%s", vips_image_get_history( im ) );
|
||||
else {
|
||||
GValue value = { 0 };
|
||||
GType type;
|
||||
char *str;
|
||||
|
||||
if( im_header_get( im, main_option_field, &value ) )
|
||||
if( vips_image_get_as_string( im, main_option_field, &str ) )
|
||||
return( -1 );
|
||||
|
||||
/* Display the save form, if there is one. This way we display
|
||||
* something useful for ICC profiles, xml fields, etc.
|
||||
*/
|
||||
type = G_VALUE_TYPE( &value );
|
||||
if( g_value_type_transformable( type, IM_TYPE_SAVE_STRING ) ) {
|
||||
GValue save_value = { 0 };
|
||||
|
||||
g_value_init( &save_value, IM_TYPE_SAVE_STRING );
|
||||
if( !g_value_transform( &value, &save_value ) )
|
||||
return( -1 );
|
||||
printf( "%s\n", im_save_string_get( &save_value ) );
|
||||
g_value_unset( &save_value );
|
||||
}
|
||||
else {
|
||||
char *str_value;
|
||||
|
||||
str_value = g_strdup_value_contents( &value );
|
||||
printf( "%s\n", str_value );
|
||||
g_free( str_value );
|
||||
}
|
||||
|
||||
g_value_unset( &value );
|
||||
printf( "%s\n", str );
|
||||
g_free( str );
|
||||
}
|
||||
|
||||
return( 0 );
|
||||
@ -202,8 +182,8 @@ main( int argc, char *argv[] )
|
||||
int i;
|
||||
int result;
|
||||
|
||||
if( im_init_world( argv[0] ) )
|
||||
error_exit( "unable to start VIPS" );
|
||||
if( vips_init( argv[0] ) )
|
||||
vips_error_exit( "unable to start VIPS" );
|
||||
textdomain( GETTEXT_PACKAGE );
|
||||
setlocale( LC_ALL, "" );
|
||||
|
||||
@ -211,7 +191,7 @@ main( int argc, char *argv[] )
|
||||
|
||||
g_option_context_add_main_entries( context,
|
||||
main_option, GETTEXT_PACKAGE );
|
||||
g_option_context_add_group( context, im_get_option_group() );
|
||||
g_option_context_add_group( context, vips_get_option_group() );
|
||||
|
||||
if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
|
||||
if( error ) {
|
||||
@ -219,7 +199,7 @@ main( int argc, char *argv[] )
|
||||
g_error_free( error );
|
||||
}
|
||||
|
||||
error_exit( "try \"%s --help\"", g_get_prgname() );
|
||||
vips_error_exit( "try \"%s --help\"", g_get_prgname() );
|
||||
}
|
||||
|
||||
g_option_context_free( context );
|
||||
@ -227,9 +207,9 @@ main( int argc, char *argv[] )
|
||||
result = 0;
|
||||
|
||||
for( i = 1; i < argc; i++ ) {
|
||||
IMAGE *im;
|
||||
VipsImage *im;
|
||||
|
||||
if( !(im = im_open( argv[i], "r" )) ) {
|
||||
if( !(im = vips_image_new_from_file( argv[i] )) ) {
|
||||
print_error();
|
||||
result = 1;
|
||||
}
|
||||
@ -241,7 +221,7 @@ main( int argc, char *argv[] )
|
||||
}
|
||||
|
||||
if( im )
|
||||
im_close( im );
|
||||
g_object_unref( im );
|
||||
}
|
||||
|
||||
vips_shutdown();
|
||||
|
Loading…
Reference in New Issue
Block a user