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 最初のリリース