pgmライブラリー
#include <pgm.h>
cc ... -L/CG/lib -I/CG/include -lpgm -lpbm
typedef ... gray; gray の値の範囲は 0 から PGM_MAXMAXVAL (整数値)までである。
#define PGM_MAXMAXVAL ...
extern gray pgm_pbmmaxval;
pgm_pbmmaxval は、PGM プログラムで PBM ファイルを
読み込む時に使用される PBM の最大値である。
通常値は 1 だが、プログラムによってはそれ以上の
値にした方が良い場合がある。
#define PGM_FORMAT ...
#define RPGM_FORMAT ...
#define PGM_TYPE PGM_FORMAT
#define PGM_FORMAT_TYPE(int format)
format が pgm の時は PGM_TYPE、そうでない時は -1 を返す。
gray **pgm_allocarray(int cols, int rows)
gray *pgm_allocrow( int cols )
void pgm_freearray( gray **grayrow, int rows )
pgm_freerow( gray *grayrow )
void pgm_init( int *argc, char *argv[] );
void pgm_readpgminit( FILE *file, int *colsP, int *rowsP, gray *maxvalP, int *formatP )
void pgm_readpgmrow( FILE *file, gray *grayrow, int cols, gray maxval, int format )
gray **pgm_readpgm( FILE *file, int *colsP, int *rowsP, gray *maxvalP )
void pgm_writepgminit( FILE *file, int cols, int rows, gray maxval, int forceplain )
void pgm_writepgmrow( FILE *file, gray *grayrow, int cols, gray maxval, int forceplain )
void pgm_writepgm(FILE *file, gray **bits, int cols, int rows, gray maxval, int forceplain )
PGMの読み込みと書き込み
#include <pgm.h>
main(int argc, char *argv[])
{
int x, y;
FILE *infile, *outfile;
int cols, rows, format;
gray maxval;
gray *grayrow, *outgrayrow;
pgm_init(&argc, argv);
infile = pm_openr("in.pgm");
pgm_readpgminit( infile, &cols, &rows, &maxval, &format );
grayrow = pgm_allocrow( cols );
outfile = pm_openw("out.pgm");
pgm_writepgminit( outfile, cols, rows, maxval, 0 );
outgrayrow = pgm_allocrow( cols );
for(y = 0; y < rows; y++)
{
pgm_readpgmrow( infile, grayrow, cols, maxval, format );
for(x = 0; x < cols; x++)
{
/* grayrow[x]に関する処理 */
/* 結果は outgrayrow[x]に入れておく */
}
pgm_writepgmrow( outfile, grayrow, cols, maxval, 0 );
}
pgm_freerow( outgrayrow );
pgm_freerow( grayrow );
pm_close(outfile);
pm_close(infile);
}
(C) 1989, 1991 by Tony Hansen and Jef Poskanzer.