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ビットカラーのみ)で扱うべきということです。本来、それ
が終わってから新しい版のプログラムを公開するべきでしょうが、まずはこのま
まの形としました。
 
戻る