VipsImage * im_open( const char *filename, const char *mode ) { VipsImage *image; /* Pass in a nonsense name for argv0 ... this init path is only here * for old programs which are missing an vips_init() call. We need * i18n set up before we can translate. */ if( vips_init( "giant_banana" ) ) vips_error_clear(); /* We have to go via the old VipsFormat system so we can support the * "filename:option" syntax. */ if( strcmp( mode, "r" ) == 0 || strcmp( mode, "rd" ) == 0 ) { if( !(image = vips__deprecated_open_read( filename )) ) return( NULL ); } else if( strcmp( mode, "w" ) == 0 ) { if( !(image = vips__deprecated_open_write( filename )) ) return( NULL ); } else { if( !(image = vips_image_new_mode( filename, mode )) ) return( NULL ); } return( image ); }
int main( int argc, char **argv ) { GOptionContext *context; GError *error = NULL; int i; if( vips_init( argv[0] ) ) vips_error_exit( "unable to start VIPS" ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); context = g_option_context_new( _( "- thumbnail generator" ) ); g_option_context_add_main_entries( context, options, GETTEXT_PACKAGE ); g_option_context_add_group( context, vips_get_option_group() ); if( !g_option_context_parse( context, &argc, &argv, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( "try \"%s --help\"", g_get_prgname() ); } g_option_context_free( context ); if( sscanf( thumbnail_size, "%d x %d", &thumbnail_width, &thumbnail_height ) != 2 ) { if( sscanf( thumbnail_size, "%d", &thumbnail_width ) != 1 ) vips_error_exit( "unable to parse size \"%s\" -- " "use eg. 128 or 200x300", thumbnail_size ); thumbnail_height = thumbnail_width; } for( i = 1; i < argc; i++ ) { /* Hang resources for processing this thumbnail off @process. */ VipsObject *process = VIPS_OBJECT( vips_image_new() ); if( thumbnail_process( process, argv[i] ) ) { fprintf( stderr, "%s: unable to thumbnail %s\n", argv[0], argv[i] ); fprintf( stderr, "%s", vips_error_buffer() ); vips_error_clear(); } g_object_unref( process ); } vips_shutdown(); return( 0 ); }
/* Call this before vips stuff that uses stuff we need to have inited. */ void vips_check_init( void ) { /* Pass in a nonsense name for argv0 ... this init path is only here * for old programs which are missing an vips_init() call. We need * i18n set up before we can translate. */ if( vips_init( "giant_banana" ) ) vips_error_clear(); }
/** * gegl_init: * @argc: a pointer to the number of command line arguments. * @argv: a pointer to the array of command line arguments. * * Call this function before using any other GEGL functions. It will initialize * everything needed to operate GEGL and parses some standard command line * options. @argc and @argv are adjusted accordingly so your own code will * never see those standard arguments. * * Note that there is an alternative ways to initialize GEGL: if you are * calling g_option_context_parse() with the option group returned by * gegl_get_option_group(), you don't have to call gegl_init(). **/ void gegl_init (gint *argc, gchar ***argv) { GOptionContext *context; GError *error = NULL; if (config) return; /* If any command-line actions are ever added to GEGL, then the commented * out code below should be used. Until then, we simply call the parse hook * directly. */ #if 0 gegl_post_parse_hook (NULL, NULL, NULL, NULL); #else context = g_option_context_new (NULL); g_option_context_set_ignore_unknown_options (context, TRUE); g_option_context_set_help_enabled (context, FALSE); g_option_context_set_main_group (context, gegl_get_option_group ()); if (!g_option_context_parse (context, argc, argv, &error)) { g_warning ("%s", error->message); g_error_free (error); } g_option_context_free (context); #endif /* Not the best place for this ... better to put it in post_parse and just * save argv[0] here. */ vips_init (*argv[0]); }