永劫回帰 > 劉邦 (Ryuhou) > 劉邦カラープラグイン(仕様)
劉邦カラープラグイン(仕様)
目次
このページの仕様を見てもわからないと思うので、下記のプラグインの作り方に目を通すことをお勧めします。
プラグインの作り方(順を追って説明)
はじめに
劉邦 (Ryuhou)は劉邦カラープラグインを追加することによって使用できる色の形式を増やすことが出来ます。
プラグインはDLLとして作成し、ryuhou.exeと同じ階層にあるcolorフォルダ内に置きます。(拡張子は*.RPIにすることを推奨します)
今後、プラグイン仕様が変更される可能性がありますが、互換性は極力維持するようにします。
相互変換時の動作
劉邦では色の相互変換をする際、まずXtoRGB()でRGB形式に変換してからRGBtoX()で目的の形式に変換します。
つまり、全ての形式はRGB形式を介して変換されます。
ヘッダーファイル
劉邦カラープラグインを作成する際に必ず必要です。
下記を右クリックしてメニューからファイルに保存(ダウンロード)して下さい。
rpi_color104.h
RYUHOU_EXPORTについて
RYUHOU_EXPORTはヘッダーファイルの中で以下のように定義されています。
#ifdef __cplusplus
#define RYUHOU_EXPORT extern "C" __declspec (dllexport)
#else
#define RYUHOU_EXPORT __declspec (dllexport)
#endif
RPI_PLUGININFO構造体
RPI_PLUGININFO構造体は下記のように定義されています。
// プラグイン情報
typedef struct tag_RPI_PLUGININFO {
UINT uType; // プラグインタイプ(RPI_PLUGINTYPE_COLORを指定)
UINT uVer; // バージョン情報(上位ワードにSDK・下位ワードにプラグインのバージョン)
LPSTR lpName; // カラー形式名(半角64文字まで)
LPSTR lpProducer; // 制作者名(半角64文字まで)
LPSTR lpInfo; // 追記情報・コメントなど(半角256文字まで)
LPVOID lpvReserved; // 予約
}RPI_PLUGININFO, *RPI_PPLUGININFO;
RPI_SOFTINFO構造体
RPI_SOFTINFO構造体は下記のように定義されています。
// プラグイン呼び出し側の各種情報
typedef struct tag_RPI_SOFTINFO {
HWND hWnd; // 呼び出し元のウィンドウハンドル
HINSTANCE hInstance; // 呼び出し元のインスタンスハンドル
LPSTR lpBootDir; // 実行ファイルがあるフォルダのパス
LPSTR lpIniFilePath; // INIファイルのパス
LPVOID lpvReserved; // 予約。(現在では常に0)
}RPI_SOFTINFO, *RPI_PSOFTINFO;
RPI_RGBDATA構造体
RPI_RGBDATA構造体は下記のように定義されています。
// RGBデータ構造体
typedef struct tag_RPI_RGBDATA {
UINT uRed; // 赤(0〜255)
UINT uGreen; // 緑(0〜255)
UINT uBlue; // 青(0〜255)
}RPI_RGBDATA, *RPI_PRGBDATA;
RPI_COLORDATA構造体
RPI_COLORDATA構造体は下記のように定義されています。
// カラーデータ構造体
typedef struct tag_RPI_COLORDATA {
UINT uType; // カラー形式タイプ(RPI_COLORTYPE_○○○を指定)
int nParam1; // 数値パラメータ1
int nParam2; // 数値パラメータ2
int nParam3; // 数値パラメータ3
LPSTR lpString; // 文字情報(半角64文字まで)
}RPI_COLORDATA, *RPI_PCOLORDATA;
必ず実装(エクスポート)しなければならない関数
PluginInfo()
プロトタイプ :
RYUHOU_EXPORT BOOL WINAPI PluginInfo(RPI_PLUGININFO*);
説明 :
ソフトがプラグインの情報を参照するときに呼ばれます。
この関数が呼ばれたらRPI_PLUGININFO構造体にプラグインの情報を代入します。
戻り値 :
通常はTRUE。エラーが発生した場合はFALSE
RGBtoX()
プロトタイプ :
RYUHOU_EXPORT BOOL WINAPI RGBtoX(const RPI_RGBDATA*, RPI_COLORDATA*);
説明 :
RGB値から追加したカラー形式に変換するときに呼ばれます。
RPI_RGBDATA構造体に格納されたRGB値を変換してRPI_COLORDATA構造体に代入します。
またRPI_COLORDATA構造体のuTypeメンバにはカラー形式のパラメータタイプを指定します。
パラメータタイプには下記を使用することが出来ます。
RPI_COLORTYPE_PARAM1 → パラメータ1つ
RPI_COLORTYPE_PARAM3 → パラメータ3つ
RPI_COLORTYPE_STRING → 文字列
戻り値 :
通常はTRUE。
値の形式・範囲に異常がある場合、又は、エラーが発生した場合はFALSE。
XtoRGB()
プロトタイプ :
RYUHOU_EXPORT BOOL WINAPI XtoRGB(const RPI_COLORDATA*, RPI_RGBDATA*);
説明 :
追加したカラー形式からRGBに変換するときに呼ばれます。
RPI_COLORDATA構造体に格納された値を変換してRPI_RGBDATA構造体に代入します。
戻り値 :
通常はTRUE。
RPI_COLORDATAメンバの形式・範囲に異常がある、又は、エラーが発生した場合はFALSE。
必要に応じて実装(エクスポート)する関数
PluginInitialize()
プロトタイプ :
RYUHOU_EXPORT BOOL WINAPI PluginInfo(RPI_SOFTINFO*);
説明 :
ソフト起動後に呼ばれます。DLL側で初期化処理をしたい場合に実装して下さい。
RPI_SOFTINFO構造体の中にはプラグイン呼び出し側の各種情報が格納されています。
戻り値 :
通常はTRUE。異常が発生した場合はFALSE。
PluginDestroy()
プロトタイプ :
RYUHOU_EXPORT BOOL WINAPI PluginDestroy(RPI_SOFTINFO*);
説明 :
ソフト終了時に呼ばれます。DLL側で終了処理をしたい場合に実装して下さい。
戻り値 :
通常はTRUE。異常が発生した場合はFALSE。
ColorSetting()
プロトタイプ :
RYUHOU_EXPORT BOOL WINAPI ColorSetting(RPI_SOFTINFO*);
説明 :
プラグインの設定を変更するダイアログを表示する関数です。
劉邦ではこの関数を実装すると[カラー形式の設定]メニュー内に項目が追加されます。
RPI_SOFTINFO構造体の中にはプラグイン呼び出し側の各種情報が格納されています。
戻り値 :
通常はTRUE。エラーが発生した場合はFALSE。
(現在、劉邦ではこの戻り値は無視されています)
defファイルについて
VCなどのコンパイラではそのままDLLを作成すると関数名が_PluginInfo@4などになってしまうので、下記のような内容のdefファイルを作成する必要があります。
EXPORTS
PluginInfo
RGBtoX
XtoRGB
ColorSetting
PluginInitialize
PluginDestroy
戻る
Copyright (C) 輪廻(rinne) 2006-