ここはSusie Plug-in関連のプログラム作成に関する話題を取り扱うページです。

リニューアルの最中でしたが、どうやら年内完成が危ぶまれてきたのと、 Susie Plug-inのSpecのhtml化の公開許可を無事 たけちん さんからいただいたので とりあえずお披露目です。今後は「Plug-in作成メモ」は破棄される予定です。

結局Cut&Pasteしてお茶を濁してしまったような・・・。


めにゅ〜
  1. Susie Plug-in Spec. Rev.4
    Susie Plug-in(SPI32005.LZH)に付属しているPlug-inの仕様書であるSPI_API.TXT Rev.4を加筆修正したものです。 公開にあたっては作者である たけちん さんに許可をいただいています。

  2. (私が)はまるPlug-inの罠(Susie Plug-in Q and A)
    現在Plug-in作成メモとして存在するもののQ and Aの部分だけ。
    1. Plug-inがうまく認識されない
    2. 内蔵DOCが表示されない
    3. 書庫内ファイルがうまく読めない
    4. Macバイナリの付いたファイルが読めない
    5. Plug-in設定ダイアログで日本語しかでない
    6. VC++で作成したPlug-inがWin32s環境で動作しない
    7. GetPictureで不正なBITMAPINFOヘッダが返却される
    8. デバッグ中にINT 3Hで止まる
    9. Plug-inの引数の「フラグ」の値の指定はどうするの
    10. GetPluginInfoで指定する2n+2とか2n+3って何の事


  3. 各種虫さん情報(作成中)
    現存する虫さんについての情報のつもりですが、 Q and Aに書いちゃうかもしれません。

  4. Plug-inのサンプル

    Susie Plug-inのソースが公開されているものには以下のものがあります。

    たけちん さん
    nifty:FGALAV/lib/03/23にPi Plug-in
    むつきはじめ さん
    Photoshop 2.5互換データ入力プラグイン(VC++5.0用)
    井口浩和 さん
    PBM/PPM/PGM 対応 Susieプラグイン(VC++4.0用)
    計 さん
    CAM用 Susie プラグイン(Delphi3用)
    kana
    Mint Plug-in(00IN)のソース(VC++4.0用)
    永遠の都 Plug-in(00AM)のソース(VC++4.0用)
    GetFileInfoの適切な処理が思いつかなかったためかなり重いです。

    現時点でのPlug-in作成時における注意事項をいくつか。



  5. Plug-inを利用する方のサンプル

    Plug-inを使うサンプルコードを公開します。 詳しい使い方をここに書いた方が良いのですが、 取り合えず同梱のドキュメントを参考にしてください。 メールを出すまでもないような質問であれば 掲示板 の方にでも書いてもらってもよいです。

    サンプルプログラムとして3つ同梱してあります。 どれも小物ですが個人的にはそれなりに使っています。 今のSusieは書庫内ファイルのD&Dでファイルの内容をDropしてくるので、書庫内ファイルの取り扱いのサンプルのつもりで作りはじめたToBitmapは実はその目的には使えません。 そのかわりSendToに入れて使うcnvbmpってのを付属させています。

    ToBitmapは基本的にD&Dで変換したいファイルと出力先のディレクトリを指定してBitmapファイルを出力するサンプルです。 Spi2BmpやA to B Converterみたいなものだと思っていただければわかりやすいかと(こっちはいろいろ手抜きですけど)。 Spi2BmpもA to B Converterも変換したいファイルをDropして指定できないので作ってみただけです。 もうちょいまともなやつ(JPEG出力とか書庫ファイル自体の指定とか)は別に作ろうかと思ってます。
    A to B Converterはver1.3.0からD&Dでファイルが指定できるようになったようです。 またexport plug-inの仕様が公開されています。 個人的には嬉しい限りです。

    補足:
    Susie0.45cからのPlug-inの優先度、ロード方法の指定などが追加されましたが、 現在のところこれには対応していません。
    wrapper Libraryがバグっているようです。 利用する際にはToBitmapに同梱のspiif.cppと差し替えた後に、SpiDllFile::GetPictureInfo関数の、

    memset(&lpInfo, 0, sizeof(SpiPictureInfo)); /* for some plug-in's bug */

    if (lpInfo) memset(lpInfo, 0, sizeof(SpiPictureInfo)); /* for some plug-in's bug */

    と、してください。