Provided by: libnetpbm11-dev_10.97.00-2_amd64 bug

NAME

       libpnm - libnetpbm functions to read and write PNM image files

SYNOPSIS

       #include <netpbm/pnm.h>

       void pnm_init( int *argcP, char *argv[] );

       xel ** pnm_allocarray( int cols, int rows);

       xel * pnm_allocrow( int cols);

       void pnm_freearray( xel **xels, int rows);

       void pnm_freerow( xel *xelrow);

       void pnm_readpnminit( FILE *fp, int *colsP, int *rowsP, xelval *maxvalP, int *formatP );

       void pnm_readpnmrow( FILE *fp, xel *xelrow, int cols, xelval maxval, int format );

       xel ** pnm_readpnm( FILE *fp, int *colsP, int *rowsP, xelval *maxvalP, int* formatP );

       void  pnm_writepnminit(  FILE  *   fp , int cols, int rows, xelval maxval, int format, int
       forceplain);

       void pnm_writepnmrow( FILE *fp, xel *xelrow, int cols,  xelval  maxval,  int  format,  int
       forceplain );

       void  pnm_writepnm(  FILE *fp, xel ** xels, int cols, int rows, xelval maxval, int format,
       int forceplain );

       void pnm_nextimage(FILE * file,
         int * const eofP);

       void pnm_check( FILE * file, const enum pm_check_type check_type, const int format,  const
       int cols, const int rows, const xelval maxval, enum pm_check_code *retvalP);

       void  pnm_promoteformatrow(  xel  *xelrow,  int  cols,  xelval  maxval, int format, xelval
       newmaxval, int newformat);

       void pnm_promoteformat( xel **xels, int cols, xelval maxval, int format, xelval newmaxval,
       int newformat);

       xel pnm_whitexel( xelval maxval, int format);

       xel pnm_blackxel( xelval maxval, int format);

       void pnm_invertxel( xel *x, xelval maxval, int format);

       xel pnm_backgroundxelrow( xel *xelrow, int cols, xelval maxval, int format);

       xel pnm_backgroundxel( xel **xels, int cols, int rows, xelval maxval, int format);

       typedef ... xelval;

       typedef ... xel;

       #define PNM_ASSIGN1(x,v) ...

       #define PNM_GET1(x) ...

       #define PNM_EQUAL(x,y) ...

       #define PNM_FORMAT_TYPE(format) ...

DESCRIPTION

       These library functions are part of Netpbm(1).

   TYPES AND CONSTANTS
       Each  xel  contains  three xelvals, each of which should contain only the values between 0
       and PNM_MAXMAXVAL, inclusive.

   XEL MANIPULATIONS
       The PNM_GET1 macro extracts a single value from an xel, when ou know it's from  a  PBM  or
       PGM file.  When it's from a PPM file, use PPM_GETR(), PPM_GETG(), and PPM_GETB().

       The  PNM_ASSIGN1  macro assigns a single value to an xel, when you know it's from a PBM or
       PGM file.  When it's from a PPM file, use PPM_ASSIGN.

       The PNM_EQUAL macro checks two xels for equality.  The PNM_FORMAT_TYPE  macro  computes  a
       format  type  code  from a format code.  The format types are PBM, PGM, PPM, and PAM.  But
       note that PBM, PGM, and PPM each are two different formats: a plain one and a raw one.  So
       there  are four format types, but seven formats.  PNM_FORMAT_TYPE does not work on the PAM
       format code.

       pnm_whitexel() and pnm_blackxel() return a white or black xel, respectively, for the given
       maxval and format.

       pnm_invertxel() inverts an xel.

   INITIALIZATION
       pnm_init()  is  obsolete  (at  least  since  Netpbm 9.25 (March 2002)).  Use pm_proginit()
       ⟨libpm.html#initialization⟩  instead.

       pnm_init() is identical to pm_proginit.

   MEMORY MANAGEMENT
       pnm_allocarray() allocates space for an array of xels.   pnm_freearray()  frees  an  array
       space allocated by pnm_allocarray() or pnm_readpnm().

       pnm_allocrow() allocates space for a row of a PNM image.  pnm_freerow() frees it.

   READING PNM FILES
       pnm_readpnminit()  is  similar  to  pnm_readpaminit(), but reads only PNM images and has a
       different parameter list.

       pnm_readpnmrow() is similar to pnm_readpamrow() but only works on PNM  images  and  has  a
       different parameter list and returns the row as an array of xels instead of tuples.

       pnm_readpnm()  is similar to pnm_readpam() except that it reads only PNM images and uses a
       different parameter list and returns an array of rows  such  that  pnm_readpnmrow()  would
       return rather than such that pnm_readpamrow() would return.

   WRITING FILES
       pnm_writepnminit()  is  similar  to pnm_writepaminit() except that it can write only a PNM
       header and has a different parameter list.

       forceplain is a binary value.  True (nonzero) means  to  write  the  image  in  the  plain
       (ASCII)  version  of  the  selected  format.   False  (zero)  means to write it in the raw
       (binary) version of the selected format.  See PNM format specification(1).

       pnm_writepnmrow() is similar to pnm_writepamrow() except that it works only on PNM  images
       and  has  a  different  parameter  list  and takes an array of xels instead of an array of
       tuples.  See the description of forceplain  above.

       pnm_writepnm() is similar to pnm_writepam() except that it works only on PNM image, has  a
       different  parameter  list, and takes an array of rows of xels instead of an array of rows
       of tuples.  See the description of forceplain above.

   FORMAT PROMOTION
       pnm_promoteformatrow() promotes a row of xels from one maxval and format  to  a  new  set.
       Use  this  when  you  are  combining  multiple  anymaps of different types - just take the
       maximum of the maxvals and the maximum of the formats, and promote them all to that.

       pnm_promoteformat() promotes an entire anymap.

   MISCELLANEOUS
       pnm_nextimage() positions a PNM input file to the next image in it (so that  a  subsequent
       pnm_readpnminit() reads its header).

       pnm_nextimage() is analogous to pbm_nextimage(), but works on PPM, PGM, and PBM files.

        pnm_check() is similar to pnm_checkpam() except it works only on PNM images.

       pnm_check() is identical to ppm_check().

       pnm_backgroundxelrow()  figures out an appropriate background xel based on the row of xels
       xelrow, which is cols xels wide, has maxval maxval, and represents an  image  with  format
       format.

       This estimate works best when the row is the top or bottom row of the image.

       pnm_backgroundxel()  does  the  same  thing  as pnm_backgroundxelrow(), except based on an
       entire image instead of just one row.  This  tends  to  do  a  slightly  better  job  than
       pnmbackgroundxelrow().

SEE ALSO

       Libnetpbm(1),  Libnetpbm  User's Guide(1), Libnetpbm Directory(1), pbm(1), pgm(1), ppm(1),
       pam(1), libpbm(1), libpgm(1), libppm(1)

AUTHOR

       Copyright (C) 1989, 1991 by Tony Hansen and Jef Poskanzer.

DOCUMENT SOURCE

       This manual page was generated by the Netpbm tool 'makeman' from HTML source.  The  master
       documentation is at

              http://netpbm.sourceforge.net/doc/libpnm.html