README-sampled.c sampled.cについて 大島正毅 平澤雅人 長谷川為春 初版 2001.07.23 改訂日 2001.07.23 sampled.cはsamplen.cのデラックス版です。入力ファイルはsunrasterfile形 式の濃淡のほかカラーもサポートしています。機能が増えた分だけ簡潔性は損 なわれています。通常見られる8ビットpseudカラーのほか、(あまり見られま せんがあればサポートできるはずの)16ビットカラー、24ビットカラー、32ビ ットカラーをサポートするほか、1ビット深さのビットマップデータ、圧縮形 式にも対応しています(手じかにあったデータはすべてサポートしましたが、 その他は切実感がないためサポートしていません)。 出力ファイルは、8ビットpseudカラー、16ビットダイレクトカラー、24ビット ダイレクトカラーのディスプレイに対応しています。対応するための関数 mk_imageでは、異なる形式のディスプレイに対してなるべく簡潔に対応するよ うつとめましたが、結果はかなりごたごたしたものになってしまいました(一 部未整理の部分が残っています)。苦労したのは16ビットダイレクト形式ディ スプレイ(r,g,bの配置が機種により5,5,5ビット形式と5,6,5ビット形式があ る)で、それだけに対応するなら簡単ですが、ほかの形式への対応と同じ形式 にするのが苦労でした。mk_imageの冒頭部分(initted=0のときだけ動作する) で16ビットダイレクト形式ディスプレイを意識したr,g,b各カラーのあり場所を 求めています。 ダイレクトカラーのディスプレイに対しては、一切XAllocColorのたぐいを呼ば ず、じかにピクセル値を計算しているのが本プログラムの特色です。詳しく調 べていないのですが、XAllocColorを呼ぶのは重たい処理と考えられるので、そ れだけ効率がよいはずと思っています。 sampled.cという形でまとめてみて思ったことは、これまで入力と出力が密接に 関連したプログラムを書いてきましたが、自分の手じかにある環境に特化したプ ログラムを書くならそれでよいのですがこれではポータビリティのあるプログラ ムを書くのは至難のわざと思われます(出版されている解説書などを見ても、入 力と出力が渾然一体となっている例が多いようですが)。これからはできるだけ それらは分離して、正味のアルゴリズムは入力にも出力にも左右されない形式( 例えばカラーなら24ビットカラーのみ)で扱うべきということです。本来、それ が終わってから新しい版のプログラムを公開するべきでしょうが、まずはこのま まの形としました。
戻る