libpnm

pnm ライブラリー

機能

起動方法

#include <pnm.h>
cc ... -L/CG/lib -I/CG/include -lpnm -lppm -lpgm -lpbm

説明

データの型

     typedef ... xel;
         xel の値の範囲は 0 から PGM_MAXMAXVAL (整数値)までである。
     typedef ... xelval;
     #define PNM_MAXMAXVAL ...
     extern gray pnm_pbmmaxval;
         pnm_pbmmaxval は PNM プログラムで PNM ファイルを
         読み込む時に使用されるPBMの最大値である。
         通常値は 1 だが、プログラムによっては
         それ以上の値にした方が良い場合がある。
     #define PNM_FORMAT_TYPE(int format)
         format が ppm の時は PPM_TYPE、そうでない時は -1 を返す。

xel操作

xelval PNM_GET1(xel x)
xel から色の値を取り出す
PPMデータを扱っている時はPPM_GETR(),PPM_GETG(),PPM_GETB()を使うこと。
void PNM_ASSIGN(xel x, xelval v)
色の値を xel にセットする
PPMデータを扱っている時はPPM_ASSIGN()を使うこと。
int PNM_EQUAL(xel x, xel y)
xel の値が等しいかどうか調べる

PNMのメモリーマネージメント

xel **pnm_allocarray( int cols, int rows )
xelのcols個のメモリーをrows個アロケートする関数
xel *pnm_allocrow( int cols )
xelのcols個のメモリーをアロケートする関数
void pnm_freearray( xel **xels, int rows )
pgm_allocarray()でアロケートしたメモリーを解放する関数
pnm_freerow( xel xelrow )
pgm_allocrow()でアロケートしたメモリーを解放する関数

PNMの初期化関数

void pnm_init( int *argc, char *argv[] )
PNMのプログラムは最初にかならずこの関数を呼ぶこと

PNMファイルを読む関数

void pnm_readpnminit( FILE *file, int *colsP, int *rowsP, xelval *maxvalP, int *formatP )
PNMファイルからヘッダーを読む関数
void pnm_readpnmrow( FILE *file, xel *xelrow, int cols, xelval maxval, int format )
PNMファイルから一行分データを読む関数
xel **pnm_readpnm( FILE *file, int *colsP, int *rowsP, xelval *maxvalP )
PNMファイルから全部のデータを読む関数
返り値は各行のxelデータの入った配列へのポインタの配列になっている。
この関数は pnm_readpnminit(), pnm_allocarray() と pnm_readpnmrow()を 組み合わせたものである。
だからヘッダーを読み込まないで良い。

PNMファイルへ書き込む関数

void pnm_writepnminit( FILE *file, int cols, int rows, xelval maxval, int forceplain )
PNMファイルへヘッダーを書き込む関数
forceplain が 0 ならバイナリー、1 ならアスキーでデータを書き込む。
void pnm_writepnmrow( FILE *file, xel *xelrow, int cols, xelval maxval, int forceplain )
PNMファイルへ一行分のデータを書き込む関数
forceplain が 0 ならバイナリー、1 ならアスキーでデータを書き込む。
void pnm_writepnm( FILE *file, xle **bits, int cols, int rows, xelval maxval, int forceplain )
PNMファイルへ全てのデータを書き込む関数
forceplain が 0 ならバイナリー、1 ならアスキーでデータを書き込む。
この関数はpnm_writepnminit() and pnm_writepnmrow()を組み合わせたものである。
だからヘッダーを書き込まないで良い。

フォーマット変換関数

違う種類のフォーマットを扱う時、xelを別のフォーマットに変換する時に使う。

void pnm_promoteformatrow( xel *xelrow, int cols, xelval maxval, int oldformat, xelval newmaxval, int newformat )
一行づつ変換する
void pnm_promoteformat( xel **xel, int cols, int rows, xelval maxval, int oldformat, xelval newmaxval, int newformat )
データをすべて変換する

参照

プログラマー/バージョン

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

Home | Contents
abe@injapan.net