pbmライブラリー
#include <pbm.h>
cc ... -L/CG/lib -I/CG/include -lpbm
typedef ... bit; bitの値は必ず PBM_WHITE か PBM_BLACK である。
#define PBM_WHITE ...
#define PBM_BLACK ...
#define PBM_FORMAT ...
#define RPBM_FORMAT ...
#define PBM_TYPE PBM_FORMAT
#define PBM_FORMAT_TYPE(f) fがpbmの時はPBM_TYPE、そうでない時は-1を返す。
int pm_keymatch( char* str, char* keyword, int minchars )
void pm_message( char *fmt, ... )
void pm_error( char *fmt, ... )
void pm_usage( char *usage )
FILE *pm_openr( char *name )
FILE *pm_openw( char *name )
void pm_close( FILE *f )
void pbm_init( int *argc, char *argv[] )
bit **pbm_allocarray(int cols, int rows)
bit *pbm_allocrow( int cols )
void pbm_freearray( bitrow, rows )
void pbm_freerow( bitrow )
void pbm_readpbminit( FILE *file, int *colsP, int *rowsP, int *formatP )
void pbm_readpbmrow( FILE *file, bit *bitrow, int cols, int format )
bit ** pbm_readpbm( FILE *file, int colsP, int *rowsP )
void pbm_writepbminit( FILE *file, int cols, int rows, int forceplain )
void pbm_writepbmrow( FILE *file, bit *bitrow, int cols, int forceplain )
void pbm_writepbm( FILE *file, bit **bits, int cols, int rows, int forceplain )
PBMの読み込みと書き込み
#include <pbm.h>
main(int argc, char *argv[])
{
int x, y;
FILE *infile, *outfile;
int cols, rows, format;
bit *bitrow, *outbitrow;
pbm_init(&argc, argv);
infile = pm_openr("in.pbm");
pbm_readpbminit( infile, &cols, &rows, &format );
bitrow = pbm_allocrow( cols );
outfile = pm_openw("out.pbm","w");
pbm_writepbminit( outfile, cols, rows, 0 );
outbitrow = pbm_allocrow( cols );
for(y = 0; y < rows; y++)
{
pbm_readpbmrow( infile, bitrow, cols, format );
for(x = 0; x < cols; x++)
{
/* bitrow[x]に関する処理 */
/* 結果はoutbitrow[x]に入れておく */
}
pbm_writepbmrow( outfile, outbitrow, cols, 0 );
}
pbm_freerow( outbitrow );
pbm_freerow( bitrow );
pm_close(outfile);
pm_close(infile);
}
(C) 1989, 1991 by Tony Hansen and Jef Poskanzer.