プラグインについて¶
プラグインとは¶
吉里吉里に接続して、吉里吉里の機能を拡張するために使われます。
現段階で、吉里吉里で使用可能なプラグインの種類には3つあり、
- Susie Plug-in (画像読み込みとアーカイブアクセス)
- WaveSoundBufferで再生可能な形式を拡張するためのプラグイン
- そのほかの吉里吉里専用のプラグイン
となっています。
プラグインを使用する場合は Plugins.link メソッドを使用して吉里吉里本体に接続する必要があります。
プラグインの検索¶
Plugins.link メソッドでは、指定されたプラグインを以下の順序で探します。
- 吉里吉里本体と同じフォルダ
- 吉里吉里本体以下と同じフォルダにある plugin (64bit版ではplugin64) フォルダ内
- 自動検索パス
自動検索パスが、アーカイブ内などローカルファイルとしてアクセスできない場所にあると、吉里吉里はプラグインを吉里吉里本体と同じフォルダに展開しようとします。これが問題を起こすことがあるため、プラグインは「吉里吉里本体と同じフォルダ」か「吉里吉里本体以下と同じフォルダにある plugin フォルダ内」に置くことを強く推奨します。
32bit版/64bit版でのプラグインの読み分けを行うためにも plugin/plugin64 フォルダ内に置くことは重要です。
また、吉里吉里の設定ツール ( Releaser や -userconf オプション ) は、プラグインごとの埋め込みオプションの情報を収集するためにプラグインを探しますが、以下の順序で探します。
- 吉里吉里本体と同じフォルダ
- 吉里吉里本体以下と同じフォルダにある plugin フォルダ内
吉里吉里の設定ツールは自動検索パスまでは検索しないため、設定項目を含むプラグインは「吉里吉里本体と同じフォルダ」か「吉里吉里本体以下と同じフォルダにある plugin フォルダ内」に置かなければなりません。
プラグインの自動読み込み¶
吉里吉里はプラグインを自動的に検索して起動時に読み込む機能があります。自動的にプラグインを読み込ませたい場合は、プラグインの拡張子を dll から tpm に変更する必要があります。
吉里吉里は起動時 (startup.tjsを実行する直前) に、以下のフォルダから拡張子 tpm のファイルを探し、プラグインとして自動的に読み込みます。
- 吉里吉里本体と同じフォルダ
- 吉里吉里本体以下と同じフォルダにある plugin (64bit版ではplugin64) フォルダ内
吉里吉里は探したプラグインを名前で昇順に並び替え、その順序でプラグインを読み込みます。たとえば、aaa.tpm は aab.tpm よりも先に読み込まれます。これはプラグインのおいてあるフォルダには影響せず、プラグインの名前にのみ影響されます (吉里吉里本体と同じフォルダに z.tpm があっても、plugin フォルダ内に a.tpm があれば a.tpm が先に読み込まれます )。プラグインの読み込み順序を規定したい場合は、プラグインのファイル名を変える必要があります。
プラグインの作成について¶
吉里吉里のソース中に、吉里吉里付属のプラグインのソースがありますので参考にしてみてください。
現段階では、「その他の吉里吉里専用のプラグイン」の仕様は固まっていません。将来仕様が変更されても、ソースレベルでの互換性は保たれるとおもうので、バイナリレベルでの互換性が失われた場合でも、吉里吉里本体に合わせて再構築すれば使えるようになるとは思います。
Susie Plug-in について¶
Takechin 氏作の画像ビューア「Susie32」用のプラグインを利用することができます。
00IN 形式 (画像用プラグイン) と 00AM 形式 (アーカイブ用プラグイン) を使うことができますが、以下の制限、あるいは吉里吉里独自の仕様があります。
- 吉里吉里は拡張子で画像の形式を判断するため、本来の拡張子 ( GetPluginInfo 関数が返すもの ) と違う拡張子がついたような画像に対応できない ( アーカイブは対応形式をすべてチェックするので拡張子が異なっていても OK )
- 32bpp のビットマップはアルファチャンネル付きのビットマップとして見なされる
- 一部、受け付けられないビットマップ形式がある (RLE 圧縮された物や BITFIELDS が指定されているものなど )
- Susie プラグイン経由での画像読み込みやアーカイブアクセスは、吉里吉里がネイティブに扱う画像形式や xp3 アーカイブに比べてパフォーマンスがかなり低くなる
- アーカイブ中のファイルはメモリ上に展開されるため、大きなファイルを扱うには不向き
- アーカイブ内アーカイブには未対応
- Mac binary には未対応
また、Susie plug-in の規格に完全に対応していないプラグインの中には、吉里吉里と相性の悪いプラグインも存在します。
吉里吉里付属のプラグインについて¶
吉里吉里Z に標準で同梱されているプラグインの一覧です。各プラグインのソースコードは wamsoft 配下の各リポジトリで管理されています。
クラスを追加するものはリファレンスの各クラスのページを、既存クラスを拡張するものは拡張先クラスのページの「プラグイン拡張」節を参照してください。
全プラットフォーム共通¶
| プラグイン | 説明 |
|---|---|
| AlphaMovie | アルファチャンネル付き動画 ( .amv ) を再生する AlphaMovie クラスを追加します。 |
| csvParser | CSV ファイルを解析する CSVParser クラスを追加します。 |
| expat | XML を解析する XMLParser クラスを追加します。 |
| extrans | wave / mosaic / turn / rotatezoom / rotatevanish / rotateswap / ripple の追加トランジション 7 種を登録します。詳細は トランジション を参照してください。 |
| extNagano | 3duniversal / blurfade / scanline / zoomfade / rgbfade / spin / flutter / book / imagewipe / honeyturn / morphing / multiripple の追加トランジション 12 種を登録します。詳細は トランジション を参照してください。 |
| getSample | 再生中サウンドのサンプル値を取得するメソッドを WaveSoundBuffer に追加します。 |
| json | JSON の読み書き ( evalJSON / saveJSON 等 ) を Scripts に追加します。 |
| KAGParserEx | KAG シナリオを解析する KAGParser クラスを追加します ( 本体組み込み版を拡張版で置き換えます )。 |
| krkr_richtext | 多言語・装飾対応のリッチテキスト描画を行う RichText クラス群と Layer 拡張を追加します。 |
| layerExAreaAverage | 面積平均法による高品質な縮小コピーを Layer に追加します。 |
| layerExBTOA | 青成分をアルファ値へ変換するメソッドを Layer に追加します。 |
| layerExImage | 明度/コントラスト/色相/彩度の調整やノイズ追加などの画像処理を Layer に追加します。 |
| layerExLongExposure | 長時間露光 ( フレーム累積合成 ) 風の効果を Layer に追加します。 |
| layerExRaster | ラスタスクロール効果を Layer に追加します。 |
| layerExSave | レイヤ画像の非同期セーブ ( PNG / TLG5 ) を Layer / Window に追加します。 |
| layerExVector | thorvg による SVG などのベクター描画を Layer に追加します ( GdiPlus 互換 API )。 |
| lineParser | 行単位のテキスト解析を行う LineParser クラスを追加します。 |
| minizip | ZIP アーカイブの読み込み ( zip:// 自動検索パス ) と作成を行う Zip / Unzip クラスを追加します。 |
| psdfile | Photoshop PSD ファイルを読み込む PSD クラスを追加します。 |
| saveStruct | Array / Dictionary の saveStruct を拡張し、UTF-8 など出力エンコーディングを指定可能にします ( Scripts 参照 )。 |
| scriptsEx | スクリプト実行系のユーティリティを Scripts に追加します。 |
| shrinkCopy | 高速な縮小コピーを Layer に追加します。 |
| sigcheck | ファイル署名のバックグラウンド検証を Window に追加します。 |
Windows ( WINVER ビルド ) 専用¶
Win32 API に依存しているため、現時点では WINVER ビルドでのみ利用できます。
| プラグイン | 説明 |
|---|---|
| addFont | プライベートフォント ( .ttf / .otf ) の動的追加を行います。 |
| binaryStream | ファイルをバイナリレベルで読み書きする BinaryStream クラスを追加します。 |
| fpslimit | メインループの実行頻度に制限をかけます ( 現在は本体の -contfreq オプションで代替できます )。 |
| fstat | ファイルサイズや更新日時の取得などを Storages に追加します。 |
| gamepad | ゲームパッドを直接扱う Pad クラスを追加します。 |
| httprequest | HTTP 通信を行う HttpRequest クラスを追加します。 |
| layerExDraw | GDI+ による図形/テキスト描画を行う GdiPlus クラス群を追加します。 |
| memfile | メモリ上の仮想ファイル ( mem:// ) を Storages に追加します。 |
| menu | ウィンドウメニューを構築する MenuItem クラスを追加します。 |
| messenger | 外部プロセスとの WM_COPYDATA ベースのメッセージ交換を Window に追加します。 |
| msgreceiver | 外部制御の口 ( WM_COPYDATA 受信 ) を追加します ( 非推奨。messenger を利用してください )。 |
| process | 外部プロセスの起動と監視を行う Process クラスを追加します。 |
| shellExecute | 関連付けアプリケーションによるファイル / URL のオープンを System に追加します。 |
| stdio | 標準入出力へのアクセスを System に追加します。 |
| systemEx | OS 情報の取得などのユーティリティを System に追加します。 |
| tftSave | レンダリング済みフォントデータの保存機能を System / Layer に追加します。 |
| varfile | TJS の変数空間 ( 辞書中の octet ) をファイルとして参照する var:// アクセスを追加します。 |
| win32dialog | Win32 ネイティブダイアログを構築する WIN32Dialog クラスを追加します。 |
| win32ole | OLE オートメーション / ActiveX を扱う WIN32OLE / ActiveX / JScriptHost クラスを追加します。 |
| windowEx | ウィンドウ操作の各種拡張を Window / System / Console などに追加します。 |
| windowExProgress | 実行ブロック中でも表示され続けるプログレスバー付きウィンドウ表示を Window に追加します。 |