WRAPPERS(3) WRAPPERS(3)
NAME
im_wrapone, im_wrapmany - easy interface to partial image IO system
SYNOPSIS
#include <vips/vips.h>
int im_wrapone( IMAGE *in, IMAGE *out,
im_wrapone_fn fn, void *a, void *b )
int im_wrapmany( IMAGE **in, IMAGE *out,
im_wrapmany_fn fn, void *a, void *b )
where
typedef void (*im_wrapone_fn)( void *in, void *out, int n,
void *a, void *b )
typedef void (*im_wrapmany_fn)( void **in, void *out, int n,
void *a, void *b )
DESCRIPTION
These functions provide a simple way to use the VIPS partial image IO
system, provided that your image processing function involves no coor-
dinate transformations, that is, that each output PEL depends only upon
the corresponding PEL(s) in the input image(s).
You should write your operation as a buffer processing function --- for
example:
static void
invert_buffer( unsigned char *in, unsigned char *out,
int width )
{
int x;
for( x = 0; x < width; x++ )
*out++ = 255 - *in++;
}
This can now be turned into a full PIO image processing function by:
int
invert( IMAGE *in, IMAGE *out )
{
if( in->BandFmt != FMTUCHAR ||
in->Coding != NOCODING ||
in->Bands != 1 ) {
im_errormsg( "invert: bad input" );
return( -1 );
}
if( im_cp_desc( out, in ) )
return( -1 );
if( im_wrapone( in, out,
(im_wrapone_fn) invert_buffer, NULL, NULL ) )
return( 0 );
}
im_wrapmany(3) works as im_wrapone(3), but allows many input images.
All the inputs should be same Xsize and Ysize, but may vary in type.
The array of input images should be NULL-terminated, as for
im_start_many(3).
RETURN VALUE
All int-valued functions return zero on success and non-zero on error.
COPYRIGHT
National Gallery, 1995
AUTHOR
J. Cupitt - 9/2/95
11 April 1990 WRAPPERS(3)
im_wrapone 7.14.5 - Generated Tue Sep 9 10:33:40 CDT 2008
