***
Save用Add-in仕様書 ***
1.はじめに
Save用Add-inはさまざまな画像フォーマットでの,ファイル出力を実現するためのものである.
2.構成関数
・int WINAPI GetAddinInfo(int infon,LPSTR str,int strl)
Add-inに関する情報を得る.この関数の仕様はSusiePlug-inと基本的に同等である.
Parameter:
int infono : 取得する情報番号
0 : Plug-in APIバージョン
1 : Plug-in名、バージョン及び copyright
(SusieのAbout..に表示されます)
2n+2: 代表的な拡張子 ("*.JPG" "*.RGB;*.Q0" など)
2n+3: ファイル形式名
(SusieのOPENダイアログに表示されます)
LPSTR buf : 情報を納めるバッファ
int buflen : バッファ長(byte)
Return:
バッファに書き込んだ文字数を返します。
情報番号が無効の場合、0を返します。
解説:
情報番号0と1はすべてのバージョンで共通とします。
2以降は二つづつ組みでOPENダイアログで用いる情報です。
一つのplug-inで複数の画像フォーマットに対応している場合は
その数だけ拡張子とファイル形式名を用意します。
・int WINAPI SupportImage(void)
Add-inがサポートしている色数(1画素あたりのビット数)の情報を得る.
Parameter:
なし
Return:
サポートしている色数の情報.
Pmacsヘッダファイルにより,以下の定数が定義されているので,
これらのORをとった値を返す
マクロ 実際の値 色数
SUPPORT_1 (1) 2
SUPPORT_2 (2) 4
SUPPORT_4 (4) 16
SUPPORT_8 (8) 256
SUPPORT_16 (16) 65536
SUPPORT_24 (32) Full Color
SUPPORT_32 (64) Full Color
・
int WINAPI WritePicture(LPSTR *fname,
unsigned int flag,
BITMAPINFO *pHBInfo,void* pHBm,
FARPROC lpPrgressCallback,long lData,int argc,char *argv[])
画像をファイルに出力する
Parameter:
LPSTR fname :Saveするファイル名(フルパス)
int flag :追加情報(現状意味なし)
BITMAPINFO *pHBInfo:画像データ(DIB)ヘッダ情報へのポインタ
void* pHBm :画像データ本体へのポインタ
FARPROC lpPrgressCallback:
途中経過を表示するコールバック関数へのポインタ。
MakeProcInstance を用いて求める。
NULLの場合、plug-inは処理が終了するまでプロセスを占有し、
中断も出来ません。
コールバック関数のprototype:
int PASCAL ProgressCallback(
int nNum,int nDenom,long lData);
まず nNum==0 でコールされ、nNum==nDenom になるまで
定期的に呼ばれる。
戻値が 非0 の時、Plug-inは処理を中断する。
long lData : コールバック関数に渡すlongデータ。
ポインタ等を必要に応じて受け渡せる。
int argc :引き渡しパラメータの数
char *argv :引き渡しパラメータ
引き渡しパラメータについては後述
3.引き渡しパラメータについて
Jpegにおける圧縮率,Gifの透明色設定など,画像フォーマットによってはパラメータが必要なAdd-inがある.本Add-inの仕様では,パラメータはWritePictureへの2つの引数,argcおよびargvによってAdd-inに与える.この2つのパラメータを「引き渡しパラメータ」と呼ぶことにする.引き渡しパラメータのデータ構造はmain関数における引数と同様のものである.
引き渡しパラメータの持つ意味は,Add-in開発者が定めるものとする.つまり,パラメータの数やデータをargvに入れる順番・形式などはAdd-in開発者が決定しなければならない.
Add-in開発者が定めた書式に従って,Add-inに引き渡しパラメータを渡すのは使用アプリケーションの役割である.使用アプリケーションはAdd-inに対して,Add-in開発者が定めたとおりにargc,argvをセットしてAdd-in呼び出しを行わなければならない.また,ユーザの入力用インターフェイスの提供も使用アプリケーションの仕事となる.
(参考)Pmacsにおける引き渡しパラメータの設定法
上記のとおり,ユーザから入力を処理して,Add-inへの引き渡しパラメータを作成するのは使用アプリケーション(ここではPmacs)の役割である.しかし,引き渡しパラメータはAdd-in開発者によって設計されるため数も内容も一定ではない.そのため,Add-inごとに違った入力機構を用意する必要がある.しかし,組み込まれるAdd-inは不定であるため,Add-inごとの入力機構をアプリケーション内部にもたせることはできない(組み込むAdd-inをあらかじめ限定するなら可能.たとえば,Gif用Add-inしか組み込まないなら,Gif用のパラメータ入力ダイアログを用意すればよい).
そこで,PmacsではAdd-inごとにパラメータ定義ファイルを用意することにした.このパラメータ定義ファイルに必要なパラメータとそのセットすべき内容(数字なのか,文字列なのか,など)を記述する.Pmacsはこれに基づいて入力用コントロールを作成し,それに対するユーザの入力にしたがって,引き渡しパラメータを決定する.
なお,パラメータ定義ファイルは他のAdd-inと同様のものを使用する.その詳細は別紙(まだない ^^;)を参照のこと.