###############
# GIFビューア #
###############

「GIF形式」の画像ファイルを、P/ECE上で表示します。

================
インストール方法
================

1. 「gifview.pex」を、P/ECEに転送してください。
2. GIFファイルを、P/ECEに転送してください。
   GIFビューアは、ファイルの内容を見てGIFファイルかどうかを判断しているので、拡張子は何でも構いません。

========
操作方法
========

上下ボタン　　　　　　ファイルを選択します。
Ａボタン　　　　　　　ファイルを決定します。
Ｂボタン　　　　　　　メニューを消します。
ＳＥＬＥＣＴボタン　　プログラムを終了します。

========
あとがき
========

GIF形式の勉強をしながら、P/ECEでGIF形式の画像ファイルを表示する、GIFビューアを作りました。
P/ECEのフラッシュメモリ容量に入るGIFファイルならば、P/ECEの画面よりも大きな画像でも自動的に縮小して表示します。
こちらのページ(test-result/test-result.html)に、表示テストの結果をまとめました。

前回のPNGビューア、前々回のJPEGビューアに引き続き、画像ファイルフォーマットの勉強です。
GIF形式には、JPEGにおけるlibjpeg(http://www.ijg.org/)や、PNGにおけるlibpng(http://www.libpng.org/)に相当するような、標準的なライブラリが存在しないみたいです。
あるいは、GIFの開発元CompuServeのGIFのプログラムが、GIFの標準ライブラリと言えるのかも知れません。
でも、それは既に20年以上も前の古いプログラムで、現在の正式な配布サイトが見つけられませんでした。
(2009/4/8現在、「giftbx.zip」というキーワードでGoogle検索すると、一応、入手できるサイトが見つかるようです。)

GIF形式の仕組みを説明してくれている個人Webページがいくつかあり、それらのページから学ぶことができます。
僕は、時雨エノキオプト(http://www.geocities.jp/warotarock/)さんの、GIFデコーダサンプルプログラム解説(http://www.geocities.jp/warotarock/asen2ndgif001.html)を参考にさせていただきました。
特に、「単語推定」の図解が判り易かったです。

GIFビューアの作成中、特定のGIFファイルだけが正しくデコードできないというバグに悩まされました。
なんとか解決した結果、<u>GIFデコード処理を作る際に、注意しなければいけないポイントが二つある</u>と思いました。

	・終了コードに頼って、画像データの終わりを判断してはいけない。(problem-1/problem-1.html)
	・画像を展開した後、余ったデータを読み飛ばさなければいけない。(problem-1/problem-2.html)

GIF仕様書(http://www.w3.org/Graphics/GIF/spec-gif89a.txt)や、既に公開されているGIFデコーダのソースをよく読めば判ることなのでしょうけれど、僕は一週間悩みました(^^;

前回、JPEGのデコード処理中はメモリ消費量が少なく、PNGはメモリ消費量が多い、ということを書きました。
GIFデコード処理中のメモリ消費量はそれらの中間、と言っても12キロバイト程度なので、P/ECEでも許容できる消費量です。
GIFデコードルーチンは300行程度の関数1つで実装できて、他のライブラリに依存することも無く、コードサイズも小さいです。
今後作る、P/ECEのプログラムで利用してみたいと思います。

==================
Sun Apr 12 2009
Naoyuki Sawa
nsawa@piece-me.org
==================
