プラグインはDLLのインターフェイスを利用しています。
テクスチャエディタは、起動時にアプリケーション・ディレクトリにある
PlugInsディレクトリ内のDLLを検索し、
プラグインの名前、バージョン、種類を順次チェックしていき、動的にリンクします。
名前やバージョン情報は、DLLのリソースのVS_VERSION_INFOから得ますので、必ずバージョンリソースをDLLに含めて下さい。
VS_VERSION_INFOは、日本語リソース(041104b0)と英語リソース(040904e4)を用意して下さい。
Commentに詳細情報、
CompanyNameに社名、
FileVersionにプラグインのバージョン、
InternalNameにメニュー名が使われます。
DLL側では最初に、int TEPI_getType()が呼ばれ、そこでプラグインの種類を返します。
その次に、BOOL TEPI_isAvail(DWORD version)が呼ばれ、
アプリケーションの4バイトのバージョン(1.0.0.15の場合、
0x0100000f)がパラメータとして与えられるので、
そのアプリケーションに対応していれば、TRUEを返します。
対応していなければ、FALSEを返して下さい。
もし、種類がインポート(TEPIT_IMPORTのフラグが立っている)なら、
ファイルメニューのインポートに名前が登録されているはずです。
ユーザーがインポート・プラグインを呼び出した場合、対応するDLLの
BOOL TEPI_import(Pic* pInput, Pic* pOutput)が呼び出されます。
もし、種類がエクスポート(TEPIT_EXPORTのフラグが立っている)なら、
ファイルメニューのエクスポートに名前が登録されているはずです。
ユーザーがエクスポート・プラグインを呼び出した場合、対応するDLLの
BOOL TEPI_export(Pic* pInput)が呼び出されます。
もし、種類がプレビュー(TEPIT_PREVIEWのフラグが立っている)なら、
表示メニューのプレビューから呼び出される様になっています。
しかし、古いのテクスチャエディタ(1.0.1.4以前)では、プレビュープラグインは1つのみしかサポートしておりませんので、
他のプレビュープラグインと同時に利用できません。
ユーザーがプレビュー・プラグインを呼び出した場合、対応するDLLの
BOOL TEPI_preview(Pic* pInput)が呼び出されます。
バージョン1.0.1.5のテクスチャエディタから、2枚までプレビューが可能になりました。
ユーザーがプレビュー・プラグインを呼び出した場合、対応するDLLの
BOOL TEPI_preview2(Pic* pInput, int no)が呼び出されます。
struct TMF { }; |
m_widthはイメージの幅、
m_heightはイメージの高さ、
m_bitsはイメージのビットの深さ(4 or 8)が入ります。 m_pBitmapは、BMPと全く同じバイナリのイメージデータです。 4bitの場合は1バイトに2ピクセル分となり、上位4bitビットが左、下位4bitが右のピクセルになります。 8bitの場合は1バイト1ピクセルなので、左から右に順次並びます。 ただし、1ラインは32bitアライメントなので、右端の端数のギャップは0で埋められます。 サイズは、((((m_width * m_bits / 8) + 3) & ~3) * m_height)バイトになります。 BMPと同じく、画像の下から上に向って配置してあり、Y軸が逆向きになっておりますので注意して下さい。 |
struct TLF { }; |
m_typeはパレットの種類(0 = 16bit RGBA/1 = 16bit IA) m_numはパレットの個数(16/256) m_color_arrayはパレットの配列です。 |
struct Pic { }; |
m_pTMFはTMFのポインタ。 m_pTLFはTLFのポインタ。 m_pReservedは将来的の属性テーブルへのポインタ。 m_paletteは、4bitイメージ+256パレット時のパレットブロックの番号 |
種類、(TEPIT_IMPORT | TEPIT_EXPORT | TEPIT_PREVIEW)を返します。
それぞれのフラグに応じてTEPI_import() | TEPI_export() | TEPI_preview()が呼ばれます。
この関数は、起動時の最初の1回だけ呼ばれます。
テクスチャエディタのバージョン番号
(例:1.0.0.15=0x0100000f)
から、このプラグインが有効か無効かを返します。
有効であればTRUE、無効であればFALSEを返して下さい。
この関数は、起動時の最初の1回だけ呼ばれます。
将来の予約です。
TRUEで終了して下さい。
将来の予約です。
AfxMessageBox()などでDLLについての情報のダイアログを出して頂ければ幸いです。
TRUEで終了して下さい。
種類でTEPIT_IMPORTフラグを立てている場合に、ユーザーの要求によって呼ばれます。
pInputにテクスチャエディタ側の現在の画像のコピーが含まれています。
pOutputにイメージを与える事でテクスチャエディタ側でインポートした画像をペーストする事が出来ます。
インポートに成功した場合TRUEを返し、
取り消しや失敗した場合はFALSEを返して下さい。
注意:
種類でTEPIT_EXPORTフラグを立てている場合に、ユーザーの要求によって呼ばれます。
pInputにテクスチャエディタ側の現在の画像のコピーが含まれていますので、これを利用してエクスポート処理を行って下さい。
エクスポートに成功した場合TRUEを返し、
取り消しや失敗した場合はFALSEを返して下さい。
種類でTEPIT_PREVIEWフラグを立てている場合に、ユーザーの要求によって呼ばれます。
テクスチャエディタ側でプレビューをONにしていると、イメージやパレットに変更が加わる度に呼ばれます。
プレビューに成功した場合TRUEを返し、
取り消しや失敗した場合はFALSEを返して下さい。
#ifndef __tePlugIn_H__ #define __tePlugIn_H__ #ifdef __cplusplus extern "C" { #endif #pragma pack(1) struct TMF { }; struct TLF { }; /* Picture */ struct Pic { }; #pragma pack() //// TextureEditor Plug-In Type enum TEPIT { }; #define DLLEXPORT __declspec(dllexport) /* //// YOU MUST BE IMPLEMENT BELOW FUNCTIONS //// // get type of plug-in // ex) return TEPIT_IMPORT | TEPIT_EXPORT; // caution: preview type plug-in is only one. */ DLLEXPORT int PASCAL EXPORT TEPI_getType(); /* check an application version. if available then return TRUE. */ DLLEXPORT BOOL PASCAL EXPORT TEPI_isAvail(DWORD version); DLLEXPORT BOOL PASCAL EXPORT TEPI_property(); DLLEXPORT BOOL PASCAL EXPORT TEPI_about(); DLLEXPORT BOOL PASCAL EXPORT TEPI_import(Pic* pInput, Pic* pOutput); /* called on import. */ DLLEXPORT BOOL PASCAL EXPORT TEPI_export(Pic* pInput); /* called on export. */ DLLEXPORT BOOL PASCAL EXPORT TEPI_preview(Pic* pInput); /* called on update time of TMF/TLF. */ #ifdef __cplusplus }; #endif #endif |
Copyright (C) 1998 NINTENDO Co.,Ltd. Copyright (C) 1998 MONEGI CORPORATION. Copyright (C) 1998 INTELLIGENT SYSTEMS Co.,Ltd. All rights reserved. |