平成１０年度 KLIC プログラミング・コンテスト アイディア部門課題

	「pnmコンバータ」

							Nov. 8 1998
							福田 茂紀

１ プログラムの仕様

    このプログラムはPBM, PGM, PPMのascii, binaryの6種のグラフィックデー
  タを変換するソフトである。
    gif, jpeg画像などへの対応も考慮して設計されている。
  ＃現在は、双方共読み込むことも、書き込むこともできない。

    また、特に画像処理も行なっておらず、PPMからPGMへの変換の際に白黒化、
  PBMへの変換時に2値化を行なってはいるが、各色の平均とで白黒化を、最大
  輝度の半分で2値化を行なっているだけである。

    さらに、並列化への対応も行なわれていない。
    今後の計画としては、並列化も考えているが、基本的にインタラクティブ
  に起動するので、現在のところ逐次動作しかしない。 


２ 動作確認を行なった環境

  ・逐次環境
	OS		CPU			RAM
    Turbo Linux ver1.2	MMX Pentium 200MHz	64MBytes


３ プログラムの作成方法

    このプログラムは以下のファイルから構成される。
  main.kl1	メインプログラム
  gif.kl1	gif関係モジュール
  pnm.kl1	pnm関係モジュール
  palette.kl1	パレット操作モジュール
  bit.kl1	ビット操作モジュール
    プログラムの作成方法は、これらをすべてklicにかけると良い。
    Makefileを添付する。


４ このプログラムの使い方
    基本的に、標準入力からProlog風インタフェースを用いてインタラクティ
  ブに起動する。
    受け入れる命令はread/1とwrite/2である。

    read/1はファイル名を受け取り、グラフィックデータを読み込む。
    ファイル形式は自動認識するようになっており、強制的にある形式で読む
  ような仕様にはなっていない。
    すでにデータを読み込んだ状態でさらにread/1を実行すると、以前のデー
  タは廃棄される。

    write/2はファイル形式とファイル名を受け取り、すでに読み込まれてい
  るデータを出力する。
    初期状態では幅0、高さ0の絵を持っている内部状態になっているが、この
  状態で出力を行なうことは推奨されない。

    各命令は一つのファイルに書き込んでおくことも可能で、その際には起動
  時に命令を記述したファイルを引数として与える。
    具体的な例として、testというファイルを添付する。

	%pnmcon test
  でも、
	%pnmcon < test
  でも、同様な動作を行なうようになっている。


５ 最後に
    最後までgif関係のコードを完成させようとしたのだが、lzw形式のラスタ
  データの開始位置が分からず、ついに間に合わなかったのが残念である。
    jpegデータも判別だけはするが、まったくコード作成していない。
    現在のままでは、なんの面白味もないプログラムだが、今後適当なフィル
  タ動作などを作成するのは容易である。
