Susie::Plugin library for Ruby version 0.1.2 Yoshida Masato - 概要 竹村嘉人氏の Graphic viewer Susie (*1) 用のプラグインライブ ラリを Ruby から呼び出すためのライブラリです。 CYGWIN 版 Ruby で動作します。VC++ 版でコンパイルできることも 確認しました。 *1 - インストール ソースからコンパイルする場合は,CYGWIN 環境と Ruby-1.4.2 を ソースからコンパイルして拡張ライブラリを作成できる環境を整え る必要があります。通常の拡張ライブラリと同様にコンパイルでき ます。 例: bash$ ruby extconf.rb bash$ make bash$ make install - 使い方 使用する前に以下のようにライブラリをロードして下さい。 require "susie" 機能の詳細は Susie プラグインパッケージの SPI_API.TXT も参考 にして下さい。 -- クラスメソッド Susie::Plugin.new(spi) 指定されたプラグインライブラリを読み込み,Susie::Plugin クラスのインスタンスを生成します。プラグインの読み込みに 失敗すると例外を発生します。 対応しているプラグインは 00IN (画像インポート) と 00AM (アーカイブ展開) です。 -- メソッド getPluginInfo(infno) プラグインに関する情報を得ます。infno には以下の整数を指 定します。infno が無効な場合,nil を返します。 0: プラグイン API バージョン 1: プラグイン名 など 2n+2: 拡張子 2n+3: ファイル形式名 00IN と 00AM のライブラリで使用できます。 isSupported(filename, filecontent) 対応しているファイル形式かどうか調べます。引数はファイル 名と,ファイルの先頭の内容 (2K バイト以上) です。 MacBinary が付いている場合もありうるので,128 バイト読み 飛ばしてもう一度調べる必要があるかも知れません。 00IN と 00AM のライブラリで使用できます。 getPictureInfo(filename, offset) getPictureInfo(filecontent) 画像ファイルに関する情報を得ます。引数はファイル名と読み 込みオフセットか,ファイルの内容かどちらかを指定します。 戻値は [left, top, width, height, x_density, y_density, colorDepth, info] という形式の配列です。 MacBinary が付いている場合もありうるので,128 バイトのオ フセットを指定するか,読み飛ばしてもう一度調べる必要があ るかも知れません。 エラーが起きた場合,例外が発生します。 00IN のライブラリで使用できます。 getPicture(filename, offset) getPicture(filecontent) 画像ファイルを展開します。引数はファイル名と読み込みオフ セットか,ファイルの内容かどちらかを指定します。 戻値は [bitmapinfo, bitmap] という形式の配列です。 bitmapinfo は Win32 API の BITMAPINFO 構造体です。 必要ならば size, width, height, planes, bitcount, compression, sizeimage, xpixpermeter, ypixpermeter, clrused, clrimportant, rgbquad = bitmapinfo.unpack("VVVvvVVVVVVa*") のように展開して下さい。bitmap はイメージ本体です。 イテレータとして呼び出すことによって途中経過の状態を取得 できます。イテレータブロックには nNum と nDenom が渡され ます。ブロックの最後の評価結果を 0 以外の整数にすると, 処理を中断することができます。 エラーが起きた場合,例外が発生します。 00IN のライブラリで使用できます。 getPreview(filename, offset) getPreview(filecontent) プレビュー用画像を展開します。取り出されるのがプレビュー 用であること以外は getPicture と同じです。この API 関数 はオプショナルなので,プラグインによっては未対応例外を発 生します。 getArchiveInfo(filename, offset) getArchiveInfo(filecontent) アーカイブ内のすべてのファイルの情報を取得します。引数は ファイル名と読み込みオフセットか,ファイルの内容かどちら かを指定します。 戻値は [method, position, compsize, filesize, timestamp, path, filename, crc] という配列がファイルの数だけ並んだ 配列になります。 エラーが起きた場合,例外が発生します。 00AM のライブラリで使用できます。 getFileInfo(archivename, filename, offset[, flag]]) getFileInfo(archivecontent, filename[, nil[, flag]]) アーカイブ内の指定されたファイルの情報を取得します。引数は アーカイブ名,読み込みオフセットか,アーカイブの内容のど ちらかを指定します。また,アーカイブ内のファイル名が必須 です。flag はファイル名の大文字小文字を同一視するかどう かを指定します。true の場合,同一視します。省略時は大文 字小文字を区別します。 戻値は [method, position, compsize, filesize, timestamp, path, filename, crc] という形式の配列です。 エラーが起きた場合,例外が発生します。 00AM のライブラリで使用できます。 getFile(archivename, offset[, dir]]) getFile(archivecontent[, nil[, dir]]) アーカイブ内のファイルを取得します。引数はアーカイブ名, 読み込み開始オフセット (getArchiveInfo/getFileInfo にお ける取り出したいファイルの position) か,アーカイブの内 容のどちらかを指定します。アーカイブの内容を指定する場合, getArchiveInfo/getFileInfo の position バイト以前を切捨 てることで取り出しファイルを指定してください。 dir 引数が指定された場合,指定ディレクトリにファイルとし て取り出されます。省略した場合,戻値として取り出されます。 イテレータとして呼び出すことによって途中経過の状態を取得 できます。イテレータブロックには nNum と nDenom が渡され ます。ブロックの最後の評価結果を 0 以外の整数にすると, 処理を中断することができます。 エラーが起きた場合,例外が発生します。 00AM のライブラリで使用できます。 configurationDlg(parent, fno) 設定ダイアログを表示します。親ウィンドウのハンドルと機能 番号を指定します。 この機能は標準プラグインでは実装されていないようです。実 装されていない場合は例外が発生します。 00IN と 00AM のライブラリで使用できます。 - 注意 手元に getPictureInfo の info を返すプラグインと configurationDlg が実装されているプラグインが存在しなかった ので,動作確認できていません。 - サンプルプログラム samples/iminfo.rb プラグイン選択処理のサンプルです。すべてのプラグインをメモ リに読み込むので,プラグインが多すぎると Windows が不安定 になるかも知れません。 samples/kanonconv.rb ビットマップファイルへの変換例です。適切な画像データとプラ グインがインストールされていないと動作しません。 samples/win32/reg.rb レジストリにアクセスするためのライブラリです。上記サンプル で Susie のディレクトリを取得するために使っています。 - 権利 本拡張モジュールの著作権は吉田正人が保持します。 本拡張モジュールは,Ruby 本体のライセンスにしたがって利用す ることができます。 - 作者 吉田正人 - 履歴 Jul 24, 2000 version 0.1.2 中田伸悦さんによる Ruby-1.5 対応パッチを取り込み Dec 6, 1999 version 0.1.1 VC++ でコンパイルできるようにした Dec 2, 1999 version 0.1 最初のリリース