*************************************************** Simple Plugin-based Graphic Loader Enfle (C)Copyright 1998, 99, 2000 by Hiroshi Takekawa. Last Modified: Wed Jun 28 03:21:40 2000. *************************************************** If you don't read Japanese, see README.e. But README.e probably is out of date... This software is based in part on the work of the Independent JPEG Group The Graphics Interchange Format(c) is the Copyright property of CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe Incorporated. 1.はじめに このプログラムは、たくさんの画像をさくさく見ることを目標にしています。 ただ、クリックして画像を次々見るだけのものです。いまのところGIF, JPEG, PNG, MAG, PIC(X68k), P2, XBM, XPM, BMP, PNM, DjVuと、一部の特殊なフォー マットに対応しています。 プラグイン機構が実装されており、各フォーマットの読み書きは、本体に組み こむか、プラグインとして分離するかの二通りから選択することができます。 また特殊なアーカイブ、tarなどの一般的なアーカイブなどに対応するために archive layerが実装されており、これもプラグイン化することができます。 プラグインの仕様は公開されており、誰でもプラグインを作って拡張すること が可能です。 ただし、GIFプラグインはpatent(特許)の問題でデフォルトでは含まれてませ ん。DjVuプラグインは標準配布のlibdjvu++では構築できないのと、ライセン スをよく理解していないことによりデフォルトでは含んでいません。DjVuに関 しては後で変更される可能性があります。その他作者がバイナリ配布してるも のには含まれてるが、ソースにはないものもあります。作者がバイナリ配布し てるものは再配布禁止です。配布されているソースはGPL'dされているのでソー スから構築されたバイナリの配布は問題ありません。 以下のpluginにはlibraryが別途必要です。libarcは1.x.xでは動作しなくなり ました。動作が確認されているversionを書いておきます。 JPEG: jpegsrc-6b (libjpeg) PNG: libpng-1.0.2 or later (recommend: 1.0.6) gz: zlib-1.1.3 bz2: bzip2-0.9.5d, 1.0.0 libarc: libarc-2.0.2 (http://www.goice.co.jp/member/mo/release/) 2.動作環境 Xサーバのdepthが 8, 15, 16, 24では動くと思われます。その他は unsupportedです。今あげたdepthで表示できなかった場合はxdpyinfoの出力と 詳しい環境をお知らせください。なお、depth 16のmaskが0xf800,0x7e0,0x1f でない場合ばけると思われます。今のところこれは仕様ですが、これではこま るという方がいらしたら改変します。 今のところ以下の環境での動作が確認/報告されています。 Linux(libc5, glibc-2.0, glibc-2.1) FreeBSD-2.2.8(partial) FreeBSD-3.x FreeBSD-4.0, 5.0-CURRENT Solaris(5.5.1) SunOS4 私のメインの開発環境は2000/06/15現在 以下の通りです。 Kernel: Linux-2.4.0-test1-ac17 CPU: Celeron/366 (running at 550) X server: XFree86-4.0 Video: Matrox MillenniumII/AGP 8M Compiler: gcc version 2.95.2 19991024 (release) libc: glibc-2.1.3 3.コンパイル 基本はconfigure して make するだけです。うまくいかない際には、どのよう なエラーがでたか報告していただければ幸いです。configureが生成する config.logなども参考になります。報告先は後述してあります。makeが通った ならmake installすることもできますし、しなくても使用することは可能です。 NOTE: Solarisでmakeする場合、PATHの中で/usr/ucbより/binが先にあるよう にしてください。また、link時に-export-dynamicをはずさなくてはならない かもしれません。 configureスクリプトの指定できるオプションは、./configure --helpで詳細 がみれます。--enable-*でpluginを指定します。--enable-*-staticなどとす ると本体に組みこまれます。*部分にはloader,saver,archiverのいずれかがは いります。そうでなければ別に構築され実行時に必要に応じて読みこむことが できます。plugin名の前に-をつけると一旦指定したpluginを外します。これ は --enable-all-plugins と組みあわせて使います。ツリーにあって利用でき るpluginはshow_pluginsというscript を実行すると表示されます。 デフォルトではどれもコンパイルされません。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ たとえば、次のようにconfigureすると、 % ./configure --enable-loader="png bmp xbm" --enable-loader-static="jpeg xpm pnm" JPEG, XPM, PNM が本体に組みこまれ、PNG, BMP, XBM がpluginとなります。 全部指定する場合には--enable-all-pluginsや--enable-all-staticが使えます。 % ./configure --enable-all-plugins --enable-loader-static="jpeg png bmp" とすると、全部のpluginがコンパイルされ、jpeg, png, bmpが本体に組みこま れます。(割とおすすめ) % ./configure --enable-all-plugins --enable-loader="-bmp" とすると、bmpのloaderを除く全てのpluginがコンパイルされます。 なお、全て本体に組みこまず、独立したpluginとする場合には、 --disable-static(libtoolまわりのoptionでenfleのoptionではない)をつけると 無駄なcompileがされずに済みます。 --enable-plugins-dirをつけると、pluginがinstallされるdirectoryに defaultでpathが通るようになります。--enable-plugins-dir=dirとするとdir にdefaultでpathが通るようになります。複数指定はできません。defaultの pathを無効にしたい場合は、-PDオプションを使用してください。 プラグインはshared objectとしてcompileされます。ファイル名は.soか .so.0.0.0などとなっていなければなりません。pluginは-pで探すディレクトリ を起動時に指定できる他、環境変数ENFLE_PLUGIN_DIRで指定することができま す。環境変数では:でくぎって複数のディレクトリを指定することができます。 4.コマンドライン Enfleは非常にシンプルなプログラムです。引数に表示したいファイル名を続 けて指定するだけです。ディレクトリを指定した場合はその下のファイルを再 帰的に追加します。対応してるアーカイブを指定した場合には、その中味も読 まれます。-hとすればヘルプがみれます。ファイル名に-を指定すると標準入 力から入力します。 -q: 減色しないで表示できる場合でも256色に減色する。 -m: 起動直後の拡大方法を指定する。1: 2倍 2:画面にあわせる -c: 画像にコメントがあったら表示する。 -C: 自動変換。変換先のフォーマットをplugin名で指定できる。 -CJPEG とするとjpegに変換される。省略するとPNGになる。 -i: アーカイブ中で指定した数番目から表示を開始する。 -X: 先頭の文字列が指定した文字列と一致する名前のファイルを除外する。 -Xを何度も指定することにより複数指定可。i.e. -X tn_ は tn_* を除外する。 -w: 最初に指定された画像を壁紙にして終了する。 -x: X方向の閾値。横幅がこれ以下の画像は表示しない。 -y: Y方向の閾値。縦幅がこれ以下の画像は表示しない。 -s: X方向、Y方向の閾値を両方0にする。(指定した絵は全部表示する) -t: 透過を有効にする。 SHAPE extensionが有効な場合は二つつけることによりSHAPEを抑制する。 -p: プラグインを探すディレクトリを指定する。 デフォルトは環境変数で指定されたもののみ検索。 -P: プラグインの細かい情報を表示する。 -PP: プラグインのより細かい情報を表示する。 -PD: デフォルトのパス指定を無効にする。 -v: バージョン情報を表示する。 -h: ヘルプを表示する。 5.使い方 左クリック,n,space 次の画像へ N,Shift+space 次のdirectoryへ 右クリック,b 前の画像へ < 先頭の画像へ 中クリック,q 終了 左ドラッグ スクロール Windowサイズ変更 画像の拡大縮小。 内部で減色が必要なフルカラー画像はcore吐くかも… f 全画面表示のon/off d 表示中のファイルの削除 w 表示中の画像を壁紙に S 拡大時のsmoothing(双一次補間)のon/off s png形式でのセーブ p pms形式でのセーブ(experimental、圧縮,alphaなし) j jpeg形式でのセーブ(experimental, but works well) v 垂直方向flip h 水平方向flip m 縦横2倍拡大トグル M 画面の長編が画面に合うよう拡大する C-m 画像が画面をはみだす場合のみ縮小する Alt-m 画像の短辺が画面に合うよう拡大する r もとのサイズにもどす t thumbnailっぽい画像をつくる。特に機能はない… また、全ての画像を表示し終わっても終了します。 GIFをサポートしてる場合には、 [ アニメーションスピードダウン ] アニメーションスピードアップ \ 元のスピードにもどす ということもできます。UNGIFはアニメーションをサポートしてません。 6.プラグインについて 画像を表示するには表示したい画像用のプラグインが検索PATHの中にあるか、 Enfle本体にstaticに組みこまれていなければなりません。デフォルトでは --enable-plugins-dirを使わないかぎりどこも検索しません 。常に使いたい ものはstaticに組みこむとよいでしょう。pluginになっているものは検索PATH を指定して検索させなければなりません。検索は指定したdirectory以下を再 帰的に探します。.so(.数字.数字.数字)で終わるファイルをpluginとしてload を試みます。検索PATHを指定するには、次の2つの方法があります。 1) -pオプションで指定する 2) ENFLE_PLUGIN_DIR環境変数で指定する -pの場合は一回に一つのdirectoryしか指定できません。複数回指定すれば指 定した分だけ検索されます。環境変数の方は:で区切って複数指定することが できます。 さて、makeした後、どこにpluginがあるかですが、make installしてない場合 は、source treeの直下のplugins/ というdirectoryにまとめてありますので、 % cd /enfle/source/tree % ./enfle -p plugins/ としてみて、Available Loader: に所望のフォーマット名がでてくればOKです。 make installした場合は、$prefix/lib/enfle/plugins/ のしたにまとまって います。$prefix は指定してなければ/usr/localになります。環境変数で指定 してみると、 (sh,bash等) % export ENFLE_PLUGIN_DIR=/usr/local/lib/enfle/plugins/ (csh,tcsh等) % setenv ENFLE_PLUGIN_DIR /usr/local/lib/enfle/plugins/ % enfle となります。 なお、pluginを自分で書いてみたい、という人向けに仕様書らしき (Plugin.txt)ものもつけてあります。読んで作成することができるほど、うま く書けてませんが、sourceも参照されて是非作ってみてください。良いものが できたら教えてください。 7.標準付属のpluginについて 標準で配布に含まれているpluginの中で特に説明が必要なものについて書いて おきます。misc archiver pluginは外部プロセスを起動することによりアーカ イブの中味をenfleが読めるようにします。詳しくは、 plugins/archiver/misc/miscfmt.txtを御覧ください。libarc archiver pluginはtar,tgz,zip,lzhのアーカイブを読めるようにします。libarcでは外 部プロセスを起動しませんが、libarc libraryが必要となります。exe archiver pluginはWindowsのexeファイルを見えるようにします。詳細はわか りません…ごめんなさい。 8.その他 w3mの外部ビューアとしてenfleを使う方法 ~/.mailcap に image/*;enfle %s なんて感じに書いてください。システム全体でenfleにしてやるぜ、という方は /etc/mailcapにでも書いてください。 mewの外部ビューアとしてenfleを使う方法 以下を~/.emacsに書いてください。例はjpegをenfleで表示します。 ; use enfle w/ mew (eval-after-load "mew" '(setq mew-prog-jpeg (if (and window-system mew-xemacs-p (valid-image-instantiator-format-p 'jpeg)) '(mew-mime-image/jpeg () nil) '("enfle" () t)))) ; ↑ここにoptionをいれられます。 9.連絡先 バグの報告、御意見、御感想は歓迎します。Enfleに関するMLがあるので、そ ちらをご利用ください。自動登録となります。講読するには、 subscribe あなたの名前 とだけ本文に書いて、に送ってください。 例: subscribe Hiroshi Takekawa その後折り返し届いたメールにしたがってconfirm(登録の確認)をしてくださ い。投稿されたメールは私に各種権利があるものとします。(ログの公開、検 索の提供等を楽にするためくらいの意味しかないです) どうしてもという場合には私に直接でも結構です。 Hiroshi Takekawa 10.配布について EnfleはGNU GENERAL PUBLIC LICENSE Version 2またはそれ以降のVersionに従 います。詳細についてはCOPYINGをお読みください。補助として日本語訳 COPYING.jもつけてあります。 11.SPECIAL THANKS 原則として始めてお世話になった日付順に並んでいます。 Hiroyuki Mizukami さん 初期に動作確認、suggestionをいただきました。 Hideaki Ohashi さん 動作確認、バグだしなどに貢献してくださいました。 w3mやmewのviewerにenfleを使う方法を考えるのに協力してくださいました。 webページの英訳もやってくださいました。 3つ目の拡大方法を提案してくださいました。 TF さん Leaf CG viewerのsourceを参考にさせていただきました。 Masaki Chikama さん Alice系のことなど、さまざまなsuggestionをいただきました。 kiwamu さん Debianizeしていただきました。manページも作ってくださいました。 -(標準入力)の使用を提案してくださいました。 libarcがGPL'dされて2.0.2がでた際にlibarc pluginを新しいものに対応して くださいました。 rururu@eastmail.com (SAWAI Masahiko)さん pnm,xbmのbugを指摘していただきました。 19991018, 20000605でenbugしていたのを指摘してくださいました。 BI_RLE4 のpatchをくださいました。 xpmのbugを指摘していただきました。 depth 8で表示ができなくなっていたbugを指摘してくださいました。 Yuuki SAWADA さん FreeBSDのports, packageを作っていただいてます。 Susie pluginを利用したarchiverを作ってくださいました。 20000510で自由倍ができなくなっていたのを指摘していただきました。 TAJIRI Yasuhiro さん tar, misc, libarc, exe archiver pluginをつくってくださいました。 aldのbugを指摘、fixしてくださいました。 Susie pluginのアイデアをくださいました。 20000403の-wオプションのbugを指摘してくださいました。 Takeshi Yamaguchi さん pluginのファイル名の変更がされてなかったのを指摘してくださいました。 OKAMOTO Hiroyoshi さん hとvの機能の割り当てが逆なことを指摘してくださいました。 Masaru Nakagawa さん p2 loader pluginをつくってくださいました。 Sakai Katsuya さん 補間に関するbugの報告や、要望をくださいました。