*** SaveAdd-in仕様書 ***

 

1.はじめに

SaveAdd-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

(SusieAbout..に表示されます)

2n+2: 代表的な拡張子 ("*.JPG" "*.RGB;*.Q0" など)

2n+3: ファイル形式名

(SusieOPENダイアログに表示されます)

LPSTR buf : 情報を納めるバッファ

int buflen : バッファ長(byte)

 

Return:

バッファに書き込んだ文字数を返します。

情報番号が無効の場合、0を返します。

 

解説:

情報番号01はすべてのバージョンで共通とします。

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をあらかじめ限定するなら可能.たとえば,GifAdd-inしか組み込まないなら,Gif用のパラメータ入力ダイアログを用意すればよい).

そこで,PmacsではAdd-inごとにパラメータ定義ファイルを用意することにした.このパラメータ定義ファイルに必要なパラメータとそのセットすべき内容(数字なのか,文字列なのか,など)を記述する.Pmacsはこれに基づいて入力用コントロールを作成し,それに対するユーザの入力にしたがって,引き渡しパラメータを決定する.

なお,パラメータ定義ファイルは他のAdd-inと同様のものを使用する.その詳細は別紙(まだない ^^;)を参照のこと.

 

戻る