*       SXアイコンデータをグラフィック画面に表示する
*                                       (複数ファイル指定対応)
*
*               ivl(sx-Icon Viewer --- ordered List expansion)
*
*       v0.01(未完成):                  from May.29,1999.       dummy.x.(with J-S.I.)
*       v0.02(表示高速化、第一次完成):  from Aug. 7,1999.       dummy.x.(with J-S.I.)
*       v0.03(画像サイズの確認 etc.):   from Mar. 9,2000.       dummy.x.(with J-S.I.)

================
 SXアイコンデータをグラフィック画面につらつらと表示します。

================
 使い方は、次のようになります。

        >ivl [<オプション>] <ファイル名[.PT4]> [<ファイル名>...]

 <ファイル名>には、表示したいSXアイコンデータファイル名を、
表示したい順番で指定します。拡張子を省略すると ".PT4"を補います。

 <ファイル名>は複数指定できます。また、それぞれにワイルドカードを
使用できます。
        ex)     >ivl ???3?z q:\1999\sxba*
                カレント\???3?z.PT4 と q:\1999\sxba*.PT4 を表示

 ファイルが存在しなかった場合、単に無視されます。
 ただし、指定された全てのファイルが存在しなかった時は、さすがに
指定ミスとなります。


 <オプション>には、次のコマンドラインオプションを指定できます。
英文字の大小は無視されます(-a と -A は同じです)。

        -o[<x>][,<y>]
                ...     1画面に表示するアイコン数の指定

                 1画面に横<x>×縦<y>個のアイコンを表示する
                ように指定します。
                 値の範囲と初期値は、:
                        <x>     1〜8 初期値=7
                        <y>     1〜7 初期値=4
                です。

                 ちなみに、表示できるアイコンパターンのサイズは
                表示数に応じて増/減します。


        -n[k][m][j]
                ...     操作デバイスの限定

                 指定されたデバイスでの操作を無効にします。
                 k を指定するとキーボード、m でマウス、 j でジョイ
                スティックを無効にします。
                 また、文字を付けずに "-n" とだけすると、全デバイス
                での操作を許可します(それまでの指定を無効にする)。

                 文字 k, m, j は一度に複数指定できます(例:-nkm)。
                ただし、全デバイスを無効にすることはできません。


        -p      ...     画像サイズの表示

                 アイコン画像表示中、ファイル名の代わりに画像サイズ
                を "W:<横幅>/H:<縦幅>" という形式で表示します。

                 この表示は、キーボードの[I]キーで切り替えられます
                (詳しくは操作方法の説明をお読みください)。


        -pp     ...     アイコン情報だけを表示する

                 ファイルのアイコン情報、すなわち
                        ・ファイル名
                        ・画像サイズ
                        ・ファイルの存在パス名
                を標準出力へ出力して、実行を終了します。このとき、
                アイコン画像の描画はしません。

                 アイコンサイズだけを知りたい場合に指定するといい
                でしょう。


        -f      ...     画像データを先に読み込んでおく

                 指定されたアイコンファイルを、あらかじめメモリ上に
                読み込みます(いわゆる『オンメモリ』)。

                 これを指定すると閲覧中にファイルアクセスしないので、
                アイコンの再表示(表示ページの移動、画面モードの変更
                など)が多少速くなります。
                 その代わり、最初にファイルをまとめて読み込むため、
                起動に時間がかかります。また、ファイル数が1画面に
                収まる場合はあまり意味がありません。


        -?      ...     使用法表示
                 プログラムの簡単な使用法を表示します。


 この他に、隠し(ってわけでもないんですが)オプションとして、
インダイレクトファイルでコマンドラインを指定することができます。:

        -+-+-<file>
                ...     インダイレクトファイルの指定

                 インダイレクトファイル <file> の各行をコマンド
                ライン引数として解釈します。
                 <file> 中には、この「インダイレクトファイル指定」
                -+-+- 以外の全てのオプション、および表示ファイル名を
                指定できます。

                例)     # clinearg indirect-file test
                        ; +
                        ; |     行頭に # または ; がある行は
                        ; |     コメント行扱いします
                        ; +
                        -o4,3
                        h:\graphics\sxicon\sleep*
                        m:\GrTools\sample.sxi
                        m:\GrTools\cnvtools\*

                 <file> が存在しなかった場合、エラーにはならずに
                そのまま処理を続けます。エラーメッセージも出ません
                のでご注意ください。


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

 キーボード、マウス、ジョイスティック(1のみ)での操作が可能です
(コマンドラインオプション -n で一部を無効にすることもできます。
詳しくはコマンドラインの説明を参照してください)。

 操作          │キーボード    │マウス        │ジョイスティック
━━━━━━━━┿━━━━━━━┿━━━━━━━┿━━━━━━━━
 次画面         │[ROLL UP]     │左ボタン      │Aボタン
                │[XF1]         │              │
                │リターンキー  │              │
 前画面         │[ROLL DOWN]   │右ボタン      │Bボタン
                │[XF2]         │              │
                │[BS]          │              │
 次行           │[↓]          │下移動        │スティック下
                │スペースキー  │              │
 前行           │[↑]          │上移動        │スティック上
 先頭/最後      │[HOME]        │              │
────────┼───────┼───────┼────────
 画面を512x512に│[←]          │左移動        │スティック左
 画面を768x512に│[→]          │右移動        │スティック右
────────┼───────┼───────┼────────
 表示情報の変更 │[I]          │              │
────────┼───────┼───────┼────────
  終了          │[ESC]         │左右ボタン同時│ABボタン同時
────────┴───────┴───────┴────────

 「先頭/最後」という操作をすると、
        最初の画面から          最後の画面へ
        最初以外の画面から      最初の画面へ
のように表示位置を移動します。

 「表示情報の変更」という操作をすると、その度に
        ファイル名→パス名→画像サイズ(W:横幅/H:縦高)→ファイル名...
というように表示を切り替えます。


================
IV.X との差異(ivl で追加した機能は除く):

 今までに作者が気づいているのは以下のものです。:

・表示位置の違い
         IV.X は画面の中央に寄せた位置から表示を始めますが、ivl は
        画面一杯を使って表示します。
         このため、画面の上際に表示されるアイコンが若干見づらく
        なっています。

 これら以外にも、作者が気づいていないものがあるかも知れません。


================
注意点:

・同じファイルを2回以上指定した場合、表示は1回だけ行なわれます
(v0.02 以降)。
 この「同じファイル」判定は仮想ドライブ/ディレクトリに対しても
行ないます。
        ex)     >subst u: h:\sxicon
                >ivl h:\sxicon\foo u:foo
                この場合、foo.PT4 は1回しか表示されない

 v0.02 ではこの判定が甘く不完全でしたが、v0.03 では厳密に判定する
ように修正しました。


・表示するのは、パス名を取り除いたファイル名とそのアイコン画像です。
 「パス名を取り除く」ため、同名のファイルが別々に存在していた場合、
画面表示だけでは区別できません。

        ex)     >ivl bar backup\bar
                この場合、画面ではどちらも "bar.pt4" として表示

 ただし、v0.03 では表示情報を切り替える([I]キー:操作方法の説明を
参照)ことでパス名を表示させることもできるようになりました。


・(v0.03)画面モード変更のキーボード操作が、v0.02 以前と逆になって
います。
 これは単に、v0.02 の方が間違ってたのです。スミマセン;。


・グラフィック画面をRAMディスクなどで使っていても、問答無用で破壊
します。


================
著作権とか:

 このプログラムはフリーウェアですんで、そういう風に扱ってください。

================
バージョン履歴:

v0.01:  from May.29,1999.       dummy.x.(with J-S.I.)
         アイコン投稿者の責任として、取敢えず作成。
         最低限の表示機能を実装。

v0.02:  from Aug. 7,1999.       dummy.x.(with J-S.I.)
         憧れの「いかにもアセンブラなコードの」.PT4 画像表示処理を
        作成、表示を高速化する。第1次完成。

v0.03:  from Mar. 9,2000.       dummy.x.(with J-S.I.)
        ・アイコンサイズおよびパス名への表示切替機能を追加。
         ついでにそういう情報のみを表示するモードも追加作成する。
        ・アイコンデータの先行読み込み処理を追加。
        ・1画面のアイコン表示数を、横7×縦4から、横8×縦7に
        増やす。


================
雑記:

 今回の改変の目的は、「アイコン画像サイズの確認処理の追加」にあった
のですが、その過程で色々修正を施してしまいました。

 追加を行なったせいでプログラムサイズが多少?増えましたが(これでも
少しは減らしたんですが)、今後、もう少し?増える予定です。

--------
 あと今回、気分で(おい)1画面での表示数を増やしました。
 横8×縦7という値は、エラーメッセージのサイズによって決められた
ものです。なので、これ以上増やすには、フォントを16dotにするとか
しなくてはなりません。
 表示個数に応じてフォントサイズを変える、とかいうのは難しいコトじゃ
ないのですが・・・・ニーズ、ありますか?

--------
 それでは、また。

================
why didn't it rain?

[End Of Document]