- get_shade_versionの追加
各インターフェース派生クラスにおいて、「get_shade_version」の仮想関数が必要です。
マルチプラグインの場合は、それぞれのインターフェースに「get_shade_version」を追加するようにしてください。
戻り値は、「SHADE_VERSION」を返すようにします。
virtual int get_shade_version () const { return SHADE_VERSION; }
- 「pragma export on」マクロの追加
以下は、Mac OS XでのCodeWarriorでのみ必要になるマクロです。
これにより、外部関数として認識させます。
「create_interface」「has_interface」などのグローバル関数を記述する行より前に、
以下の内容を追加します。
#if __MWERKS__
#pragma export on
#endif
- 「create_interface」外部関数内での変更
Shade R5では、「create_interface」内にて各インターフェースを渡す場合は、
以下のようにIUnknownに「static_cast」にて渡していました。
IUnknown *u = static_cast<IUnknown *>(new plugin_component);
u->AddRef();
*p = (void *)u;
Shade6では、unknown_interfaceに以下のように渡すようにします。
unknown_interface *u = 0;
u = new plugin_component;
u->AddRef();
*p = (void *)u;
- 「has_interface」外部関数の引数の変更
「has_interface」外部関数の第二引数として「shade_interface」を渡しています。
extern_c int STDCALL has_interface (const IID &iid,shade_interface *shade) {
if (iid == plugin_iid) return 1;
return 0;
}
- 「get_text_encoding」外部関数の追加
文字コードをShade本体に判別させるための「get_text_encoding」外部関数が新たに追加されました。
これは、以下のように記述すればOKです。
extern_c int STDCALL get_text_encoding (shade_interface *shade, void *) {
return shade->is_japanese_mode() ? plugin_interface::japanese_encoding : 0;
}
- 「get_info」外部関数の追加
プラグイン情報を記述した「get_info」外部関数が新たに追加されました。
これは、プラグインの内部バージョンや説明などをShadeに教えるために設定します。
この「get_info」は記述しない場合は、名無しのプラグインとして認識されます。
extern_c void STDCALL get_info (shade_plugin_info &info, shade_interface *shade, void *) {
info.sdk_version = SDK_VERSION;
//どのバージョン以降のShadeで起動するか
info.recommended_shade_version = 35000;
//プラグインのバージョン。「major.minor.micro」で指定
info.major_version = 1;
info.minor_version = 0;
info.micro_version = 0;
//プラグインの内部ビルド番号
info.build_number = 1;
//プラグイン名称
info.product_name = "CParts-Sample1";
//プラグイン制作者名
info.author = "Y.Yutaka";
//プラグイン制作会社名
info.company = "";
//コメント
info.comments = "C-Partsのテストプラグインです。\nモーダルダイアログを表示します。";
}
プラグインマネージャは、この情報を拾ってくることになります。
- その他の変更点
ストリーム(stream_interface)からの情報の読み込み・書き出しは、
Shade R5以前は「read」「write」で行っていました。
Shade6以降では、「read_int」「read_float」「write_int」「write_float」のように、
型をアンダーバーの後に記述した関数を使うようになります。