JINZO Viewerの軌跡



1. はじまり

 JINZO Paintを使ってくれていたBABさんから、ある日メッセージをいただきました。

 「JINZO Paintで描いた絵のための、ビューアが欲しい」

 プログラム的なノウハウはJINZO Paintでだいたい掴んでいたので、一番面倒なことをお願いすることで快諾しました。

  • 操作形態の仕様策定
  • アイコン絵の作成 (私の絵心の無さは、JINZO Paintのアイコンを見てもお分かりいただけるかと..(苦笑)

 やはり、仕様を決めるのが一番難しいですね。

2. プログラミング

 BABさんから仕様とアイコン絵が届いたので、早速プログラミング。あまりプログラム的に苦労した記憶がないですね。JINZO Paintのソースプログラムをチョイチョイといじっただけ。その分、プログラムの汚さもJINZO Paint譲りですが...

3. ファイル指定

 唯一こだわったのが、ファイル指定の部分。WinCE標準で用意されているファイルオープンダイアログをJINZO Paintで使用していますが、やはり使いにくすぎますしね。

 とりあえず、PsPCでは現在の方法が一番スマートかなとは思っていますが、どうでしょう?

4. カラー対応

 グレー4階調のE-55だけでなくカラーも出せるのJornada680も持っていることだし、カラー対応もさせました。扱える画像フォーマットは、無圧縮BMPだけですが 1bpp(2色) / 2bpp(4色) / 4bpp(16色) / 8bpp(256色) / 16bpp(65536色) / 24bpp(1677万色) です。私のホームページの紹介ではグレー4階調のサンプル画像しか紹介してないから、もしかしたらJINZO Viewerがカラー画像も表示できるって知らない人もいるかも。

 実は、WindowsCEでメジャーな 2bpp(4階調グレー) と 16bpp(65536色)、どちらもBMPの規格にはありません。で、どちらも問題があります...


 2bppでは1ピクセル(1ドット)を2ビットで扱います。つまり、2進数で 00/01/10/11 の4色です。で、それぞれの色ごとに、RGBそれぞれ8ビットの色情報がBMPファイルに埋め込まれます。つまり、1677万色中の4色が扱えるわけです。ただし、E-55などではグレー4階調(黒、濃灰、薄灰、白)なので、4色を個別に見るとRGBの値は同じとなります。

 WindowsCEサービスや開発環境(Vidual C++ for WinCE)では、以下の値となっています。

{ 0x00, 0x00, 0x00 }
{ 0x80, 0x80, 0x80 }
{ 0xC0, 0xC0, 0xC0 }
{ 0xFF, 0xFF, 0xFF }

 ただし、一部のアプリケーションでは、以下の値を採用しています。

{ 0x00, 0x00, 0x00 }
{ 0x55, 0x55, 0x55 }
{ 0xAA, 0xAA, 0xAA }
{ 0xFF, 0xFF, 0xFF }

 どうやら、Microsoftの初期の開発環境では、下側の値が使われていたそうです。さすがMS、なんだかなぁですね。


 16bpp(65536色)では、RGBの値を16ビットで表すことになります。RGBそれぞれを5ビットとすると1ビット余りますが、この1ビットとRGBの5ビット(x3)をどのように組み合わせて16ビットにするかが、アプリケーションによってまちまちなのです。


Pocket IE のパレット情報



あるWin95/NT用グラフィックツールのパレット情報

 JINZO Viewerでは仕方なくPocketIEに合わせていますが、どれが正しいのでしょう...?

5. JINZO Paintとの連携

 ユーザーさんから、JINZO Paintとの連携は出来ないの?という問い合わせを貰いました。JINZO Paintのファイル選択は前述のようにWinCE標準のファイルオープンダイアログを使っているため、どうにかしなければと思っていたところだったので、JINZO ViewerからJINZO Paintを呼び出すことでお茶を濁すことにしました(笑)。

 呼び出すこと自体は簡単なのですが、問題はファイル名の受け渡し。プロセス間通信とか、プログラム本を見ると複雑なことが書かれていますが、そんなめんどくさそうなのは読む気も起こりません。お手軽に、レジストリを使用して受け渡すことにしました。伊藤さん作のレジストリ操作を行っているプログラムのソースファイルを参考にしたので楽チンでした。

6. 今後の予定

 PsPCの画像ビューアとしては、もうやることは無いです。JPEGへの対応はめんどくさいし。HPCでは、ファイル名を縮めて表示しているのをやめてファイル名全体を表示することをするべきかもしれませんが...

 なにか要望がありましたら、教えてください。出来る限り対応していきたいと思います。