24) アイコンの透明化〜壁紙機能を使っても見栄え良く
 現時点(NS Basic Ver.5.04)では、NS Basicは透明背景のアイコンには対応していません。
通常は問題ありませんが、壁紙などを設定したPalmではあまり見栄えが良いものではありません。
    周りが・・・
ちょっと大袈裟にバックを暗くしてみましたが、このように回りに白いフチが残ってしまいます。
ここでは簡単な方法で、アイコンを透明背景に対応する方法を説明します。
これらの手順では、ローレゾ及びハイレゾの両方のアイコンを簡単に変換する事が出来ます。

【概略】
アイコンの透明化対応は、以下の手順で行います。
  1. 透明化するアイコンを用意します
  2. PilRC(Pilot Resource Compiler)によって透明アイコンのバイナリファイルを作ります
  3. PAR(Palm Database Archiver)によって既存のアプリのアイコンを入れ替えます
続いて、これらの手順を紹介します。
今回は8ビットカラー(256色)のアイコンを中心に説明します。
まぁ、モノクロ、グレースケールではあまり壁紙は置かないでしょうし、16ビットカラーアイコンを作る必要はあまりないと思われますので8ビットアイコンだけで十分じゃないでしょう。


1.透明化するアイコンの用意
Palmのアイコンは以下のサイズですが、一般的に22x22のアイコンを使いますね。
ちなみにハイレゾアイコンはそれぞれ、その倍サイズとなります。
    ローレゾアイコン
      大アイコン:22x22、32x22、32x32
      小アイコン:15x9

    ハイレゾアイコン
      大アイコン:44x44、64x44、64x64
      小アイコン:30x18
まず、通常どおり8ビットカラーでアイコン画像を作成します。
いつもどおりで構いませんが、透明化したい色を1色用意することを忘れないで下さい。
もちろん、画像の中で使っていない色に限られます。
透明化した色のRGB値は控えておいてください。後で使います。
この説明では、黄色(R=255、G=255、B=0)を透明色に指定します。
    ローレゾ   ハイレゾ
    ローレゾとハイレゾのアイコン。それぞれ3倍サイズで表示しています。
作った画像は、8ビットカラーのビットマップ形式で保存してください。
NS Basic上ではJPEGやGIFも扱えますが、ここで紹介するツールはBMPのみ対応です。


2.透明アイコンのバイナリファイルを作る
Pilot Resource Compiler (PilRC)は、Wes Cherry氏とAaron Ardiri氏によって作られたフリーウェアで、複数の画像ファイルをPRC形式(データベース形式)に変換したり、バイナリ形式に変換できるプログラムです。(入手方法は一番下を参照)
多くの機能がありますが、アイコンを差し替える事だけを優先して説明します。

ダウンロードしたPilRCを含む圧縮ファイルには、多くのファイルが含まれていますが、必要なファイルは「pilrc.exe」だけです。他は興味があれば見てください。

まず、バイナリファイルを作るための「スクリプトファイル」を用意します。
スクリプトは以下のモノをメモ帳にコピペし、適当に修正します。
    ICON ID 1000
    BEGIN
      BITMAP "LargeIcon22x22.bmp" BPP 8 DENSITY 72 TRANSPARENT 255 255 0
      BITMAP "LargeIcon44x44.bmp" BPP 8 DENSITY 144 TRANSPARENT 255 255 0
    END
    
    ICON ID 1001
    BEGIN
      BITMAP "SmallIcon15x9.bmp" BPP 8 DENSITY 72 TRANSPARENT 255 255 0
      BITMAP "SmallIcon30x18.bmp" BPP 8 DENSITY 144 TRANSPARENT 255 255 0
    END
    
Palm上のプログラムでは、大アイコンのリソースが1000、小アイコンは1001とそれぞれ固定されています。
もし小アイコンを使わない場合、上記のファイルのICON ID 1001は省略しても構いません。
BEGIN〜ENDで囲まれた部分に、処理するアイコン画像を記載します。
ファイル名はそのままです。
BPPはビット深度で、今回は8ビットなので 8を指定します。
DENSITYは解像度です、ローレゾは72、ハイレゾには144を指定します。
TRANSPARENTに透明にしたい色のRGB値を指定します。今回は黄色RGB=255 255 0を指定します。

このスクリプトをメモ帳で作って適当な名前で保存します。
例えば「sample.rpc」とかにしておきましょう。

このsample.rpcをPilRCで処理します。
手っ取り早く、pilrc.exeとそれぞれの画像、スクリプトファイルを同じフォルダに入れておき、コマンドラインから、
    
    pilrc sample.rpc
    
と入力します。
(※パスが通っていなければなりません、なんて書く必要はないですね。)
    
    PilRC v3.0
      Copyright 1997-1999 Wes Cherry   (wesc@ricochet.net)
      Copyright 2000-2003 Aaron Ardiri (aaron@ardiri.com)
    
    Generating 68K resources from 'sample.rpc'.
    Writing tAIB03e8.bin (2476 bytes)
    
このように表示されたら完了です。
アイコンは、ぞれぞれ次の名前で同じフォルダにに書き出されます。
    大アイコンは「tAIB03e8.bin」
    小アイコンは「tAIB03e9.bin」
1種類のアイコンに対して1つのファイルです。
複数の解像度、ビット深度のビットマップを一括で処理できるので簡単ですが、大抵の場合8ビットのカラーアイコンだけ透明化しておけば問題ないはずですね。


3.既存のアプリのアイコン入れ替え
PAR (Palm Database Archiver)はDavid Williams氏が開発したフリーウェアで、PDBファイルやPRCファイルを作成するツールです。
PARを使って行う事は、作られたプログラムから、必要のない不透明アイコンデータを削除し、必要なアイコンデータを追加します。
書いている事は複雑そうですが、やっている事は簡単です。

既存のプログラムファイル(例えば、goodgame.prc)を置き換えてみます。
こちらも操作はコマンドラインで行います。

まず、不要なアイコンデータを削除します。
これには「d」コマンドを使います。
大アイコンの削除は、以下の通りです。
    
    par d goodgame.prc tAIB 1000
    
同様に、小アイコンの削除は、以下の通りです。
    
    par d goodgame.prc tAIB 1001
    
ファイル名とID番号(1000,1001)の違いだけで、後は同じです。
これでgoodgame.prcから既存のアイコンデータが削除されました。
消す必要がない場合は、特に削除しなくても構いません。

次は追加です。
「a」コマンドを使います。 大アイコンの追加は以下の通りです。
    
    par a goodgame.prc tAIB03e8.bin
    
小アイコンも同様です。
    
    par a goodgame.prc tAIB03e9.bin
    
アイコンのバイナリファイルはPilRCで作られたもので、それぞれ固定の名前でしたので、特に迷う事はないでしょう。
もちろん、大アイコンだけ処理するならば、小アイコンの処理は不要です。

処理後、コマンドプロンプトには特に何も表示されませんが、既にgoodgame.prcは、透明アイコン化されています。
POSEではエラーが出る場合があるようですが、実機では問題なく動作するでしょう。

    周りはバッチリ


終わりに
如何でしょうか?
透明アイコン化が簡単である事はお分かりいただけたと思いますが、それ以上に重要なのは、プログラムの開発は従来どおりでよい、という点です。
つまりベータテストやら色々と終わった後、公開前に透明アイコン化の処理をすればよい、という事です。
既存のアプリの透明化も簡単ですね。

一歩進めれば、アイコンファイルは最初から用意する必要もなく、最後に追加する事も出来ます。
これらのツール、使い方次第では、後からビットマップを挿入する事も出来るようですので、もっと詳しく知りたい人は、NS Basic社のTech Note 4を参考にして下さい。

また、これでも説明が難しくて分からない、という人はCliCliClie(http://www.page.sannet.ne.jp/lwol/)の厳達さんが作られたユーティリティを使うのが良いでしょう。


PilRCの入手先
http://www.ardiri.com/
直リンク:
http://www.ardiri.com/palm/download.php?file=pilrc_w32.zip


PARの入手先
http://www.djw.org/product/palm/par/