.TH IM_ISINT 3 "11 April 1990"
.SH NAME
im_isint, im_isuint, im_isfloat, im_isscalar, im_iscomplex, 
im_isfile, im_ispartial, im_isvips, im_isMSBfirst, 
im_fexists, im_amiMSBfirst \- classify image types
.SH SYNOPSIS
.B #include <vips/vips.h>

int im_isMSBfirst( im )
.br
IMAGE *im;

int im_amiMSBfirst( void )

int im_fexists( const char *filename, ... )

int im_isvips( filename )
.br
char *filename;

int im_isfile( im )
.br
IMAGE *im;

int im_ispartial( im )
.br
IMAGE *im;

int im_isint( im )
.br
IMAGE *im;

int im_isuint( im )
.br
IMAGE *im;

int im_isfloat( im )
.br
IMAGE *im;

int im_isscalar( im )
.br
IMAGE *im;

int im_iscomplex( im )
.br
IMAGE *im;

.SH DESCRIPTION
im_fexists(3) returns non-zero if the named file exists and is readable. Args
as printf(3).

im_isvips(3) tests a file for vips-ness.

im_isMSBfirst(3) returns true (1) if the file is in most-significant-byte first
form. This is the byte order used on the SPARC architecture, and others. It
returns false (0)for intel-order images.

im_amiMSBfirst(3) returns true (1) if this processor is MSB first. 

im_isfile(3) returns true if the descriptor corresponds to some disc object,
that is, was opened with modes "r", "rw" or "w".

im_ispartial(3) returns true if the descriptor is partial,
that is, was opened with mode "p".

The rest of these functions test im\-\>BandFmt, returning logical truth
(non-zero) if BandFmt is one of a number of possibles, and returning zero if
it is not.

im_isint(3) (is integer type) returns true if im\-\>BandFmt is one of FMTUCHAR,
FMTCHAR, FMTUSHORT, FMTSHORT, FMTUINT or FMTINT.

im_isuint(3) (is unsigned integer type) returns true if im\-\>BandFmt is one of
FMTUCHAR, FMTUSHORT or FMTUINT.

im_isfloat(3) (is floating point type) returns true if im\-\>BandFmt is one of
FMTFLOAT or FMTDOUBLE.

im_isscalar(3) (is scalar type) returns true if im\-\>BandFmt is one of FMTUCHAR,
FMTCHAR, FMTUSHORT, FMTSHORT, FMTUINT, FMTINT, FMTFLOAT or FMTDOUBLE.

im_iscomplex(3) (is complex type) returns true if im\-\>BandFmt is one of
FMTCOMPLEX or FMTDPCOMPLEX.

.SH COPYRIGHT
National Gallery, 1993
.SH SEE ALSO
im_tiff2vips(3), im_jpeg2vips(3)
.SH AUTHOR
J. Cupitt \- 23/7/93
