Merge pull request #13 from bgilbert/openslide-stable-fixes
Improve OpenSlide argument parsing for 7.28 stable branch
This commit is contained in:
commit
0b6058851f
|
@ -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 = 1;
|
||||
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;
|
||||
|
||||
|
|
|
@ -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 ),
|
||||
|
|
|
@ -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 );
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue