version_shade8sdk
バージョン情報(get_info)について
Shade8.1.1プラグインSDKでは、グローバル関数の「get_info」にて以下のように記載しても、product_name / author/company/commentsの記述が無効になるようです(それ以外は効いている)。
extern "C" void STDCALL get_info (shade_plugin_info &info, shade_interface *shade, void *) { const bool japanese = shade->is_japanese_mode(); info.sdk_version = SHADE_BUILD_NUMBER; info.recommended_shade_version = 390000; info.major_version = 1; info.minor_version = 0; info.micro_version = 1; info.build_number = 0; // 以下はShade8.1.1では無効になる? info.product_name = "HelloShade"; info.author = (char *)"shade plugin book."; info.company = ""; info.comments = japanese ? (char *)"簡単なプラグイン" : (char *)"simple plugin."; }
では、反映されない部分を反映させるにはどうすればいいでしょうか?答えはSXULにあります。
Windowsの場合は「sample\resources\sxuls」内の「text.ja.sxul」「text.en.sxul」がバージョン情報のリソースです。実際はVC++ .NET2003のリソースファイル(script2.rc)にて以下のように定義されています。
// 日本語 resources ... TEXT SXUL "..\\..\\sample\\resources\\sxuls\\text.ja.sxul" ... // 英語 (米国) resources ... TEXT SXUL "..\\..\\sample\\resources\\sxuls\\text.en.sxul"
リソース名は「TEXT」です。実際はSDK内部でバージョン情報として利用しているようです。
OSXの場合は、「macos/plugins/ja.lproj/sxuls/text.sxul」「macos/plugins/en.lproj/sxuls/text.sxul」がXcodeでリソースとして参照されています(詳しくは「SXUL」を参照)。
このSXULファイル「text.ja.sxul(OSXではtext.sxul)」を見てみましょう。
バージョンのSXULファイル
<?xml version='1.0' encoding='UTF-8'?> <strings> <string id='major_version' value='1'/> <string id='minor_version' value='0'/> <string id='micro_version' value='0'/> <string id='build_number' value='1000'/> <string id='product_name' value='simple plugin'/> <string id='author' value='e-frontier, Inc.'/> <string id='company' value='e-frontier, Inc.'/> <string id='comments' value='simple plugin'/> </strings>
1行目を見ると、このファイルがUTF-8のXMLファイル形式であることが分かります。get_infoグローバル関数の内容と同じですね。どうやらこれがget_infoで失われた文字列部分のリソースとなりそうです。
「product_name」「author」「company」「comments」のvalueとして、日本語リソース(SXULファイル)の場合は日本語で、英語リソースの場合は英語で記述します。後はShade自身が自動判別して言語による切り替えはしてくれます。
ただし、「major_version」「minor_version」「micro_version」「build_number」は、SXULのが参照されずget_infoのが使われます。
まぁ、Shadeのバグでしょうかねぇ。
Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.