目次 | |
1 | はじめに |
2 | Plug-in APIのバージョン |
3 | 共通関数の説明 |
4 | 構造体の説明 |
5 | エラーコード |
6 | 仕様の変更 |
2.Plug-in APIのバージョン
今後の拡張性を持たせるため、Plug-inにAPIのバージョン番号がつく。
このバージョン番号はすべてのバージョンに共通である関数'XpiGetPluginInfo'によって取得出来る。
バージョン番号は基本的に4byteのコードで以下の意味を持つ。
H0 X N
~T T T
| | +-- N :
Normal, M : Multi-picture
| +---- I : Import
filter, X : Export filter, A : Archive extractor
+------ Virsion No.
XpiGetPluginInfo() : Plug-inに関する情報を得る |
extern "C" int _export PASCAL XpiGetPluginInfo(int nInfoNo, LPSTR pszBuf,int nBufLen); |
Parameter
int nInfoNo | 取得する情報番号 | ||
0 | Plug-in APIバージョン | ||
1 | Plug-in名、バージョン及び copyright | ||
10n+2 | ファイル形式名 | ||
10n+3 | 代表的な拡張子'*.bmp;*.dib'など
複数ある場合は';'を区切り文字として使用する。 |
||
10n+4 | デフォルト拡張子
保存の際に拡張子を指定する場合。 'BMP'、'TIF'など |
||
LPSTR pszBuf | 情報を納めるバッファ | ||
int nBufLen | バッファ長(byte) 256byte以上を推奨 |
Return
バッファに書き込んだ文字数を返す。
情報番号が無効の場合、0を返す。 |
解説
情報番号0と1はすべてのバージョンで共通とする。
一つのplug-inで複数のフォーマットに対応している場合はそれぞれ別にGetPluginInfoで情報を返して下さい。 |
XpiGetSubFormatInfo() : サブフォーマットの情報を得る |
extern "C" int _export PASCAL XpiGetSubFormatInfo(int nFmtNo, int nSubNo, int nInfoNo, LPSTR pszBuf, int BufLen); |
Parameter
int nFmtNo | フォーマット番号 | |||
int nSubNo | サブフォーマット番号 | |||
int nInfoNo | 取得するオプション番号 | |||
定数名 | 数値 | 説明 | ||
XPI_OPT_SUB_NAME | 0 | サブフォーマット名 | ||
XPI_OPT_DEPTH | 1 | サポートする画像深度32文字の'0'か'1'を返す。最初の文字が1bit画像、順次2、3、4...bit画像をサポートしている事を表す。戻り値は常に32.
例) pszBuf=10010001000000000000000100000000 ->1、4、8、24bit画像をサポート |
||
XPI_OPT_NUMIMG | 2 | 保存画像の最大枚数
'00XM'形式のプラグインの場合、1つのファイルに保存できる最大枚数を返す。 '00XN'形式のプラグインの場合常に'1'を返す。 元画像の枚数となる。 |
||
XPI_OPT_RES | 3 | 画像解像度(dpi単位で指定)
"0" : 非サポート "1" : サポート |
||
XPI_OPT_ASPECT | 4 | アスペクトレシオ
"0" : 非サポート "1" : サポート |
||
XPI_OPT_COMPRATIO | 5 | 圧縮率(%)
"0" : 非サポート "1" : サポート |
||
XPI_OPT_TRANSINDEX | 6 | パレットインデックス指定透過情報を含むかどうか
"0" : 非サポート "1" : サポート |
||
XPI_OPT_TRANSCOLOR | 7 | 色指定透過情報を含むかどうか
"0" : 非サポート "1" : サポート |
||
XPI_OPT_COMMENT | 8 | コメント
"0" : 非サポート "n" : 最大n文字 |
||
LPSTR pszBuf | 情報を納めるバッファ | |||
int nBufLen | バッファ長(byte) 256byte以上を推奨 |
Return
バッファに書き込んだ文字数を返す。
情報番号が無効の場合、0を返す。 |
XpiIsSupported() : サブフォーマットの情報を得る |
extern "C" int _export PASCAL XpiIsSupported(LPXPISTRUCT pXPI); |
Parameter
LPXPISTRUCT pXPI | XPISTRUCT構造体のポインタ |
Return
対応している画像形式であれば1を返す。 |
解説
基本的にはXpiGetSubFormatInfo()でinfono=XPI_OPT_DEPTHで対応画像深度を確認するが、念のために、実行前にこの関数で処理可能かどうか確認する。 |
XpiSavePicture() : 実際の保存処理を行う |
extern "C" int _export PASCAL XpiSavePicture(LPXPISTRUCT pXPI); |
Parameter
LPXPISTRUCT pXPI | XPISTRUCT構造体のポインタ |
Return
エラーコード |
XPISTRUCT構造体: XpiIsSupported()、XpiSavePicture()で使用 |
#pragma pack(1) // VC++等の場合 typedef struct { DWORD dwSizeStruct; HWND hWnd; LPCSTR pszName; DWORD dwNumImg; LPBITMAPINFO* lpzBI; LPBYTE* lpzImg; WORD wFmtNo; WORD wSubNo; FARPROC lpPrgressCallback; long lData; float fResolution; float fAspectRatio; float fQuality; long lTransparent; long lTransparentIndex; RGBQUAD rgbTransparentColor; LPTSTR pszComment; } XPISTRUCT, *LPXPISTRUCT; #pragma pack() // VC++等の場合各変数の説明
定数名(XPI.hで定義) | 数値 | 説明 | |
DWORD dwSizeStruct | 0 | この造体のサイズ(これでXPISTRUCT構造体のバージョンをチェック) | |
HWND hWnd | 4 | このプラグインを呼び出したアプリケーションのウインドウハンドル
特別なメッセージを出力する際に使用する NULLが渡された場合、メッセージ出力は禁止 |
|
LPCSTR pszName | 8 | 保存するファイル名のフルパス('\0'で終了する文字列へのポインタ) | |
dwNumImg | 12 | 出力する画像数(lpzBI, lpzImgの配列数) | |
lpzBI | 16 | 出力する画像のBITMAPINFO構造体のポインタ配列(dwNumImg分) | |
lpzImg | 20 | 出力する画像の画像データのポインタ配列(dwNumImg分) | |
wFmtNo | 24 | 出力する画像の画像フォーマット番号(0〜) | |
wSubNo | 26 | 出力する画像の画像サブフォーマット番号(0〜) | |
lpPrgressCallback | 28 | 途中経過を表示するコールバック関数へのポインタ。
MakeProcInstance を用いて求める。 NULLの場合、plug-inは処理が終了するまでプロセスを占有し、中断出来ない。 コールバック関数のprototype: int PASCAL ProgressCallback(int nNum,int nDenom,long lData); まず nNum==0 でコールされ、nNum==nDenom になるまで定期的に呼ばれる。 戻値が 非0 の時、Plug-inは処理を中断する。 NULLが渡される場合にも対処すること |
|
lData | 32 | 状況表示用コールバック関数に渡されるデータ | |
fResolution | 36 | 画像解像度(dpi単位で指定) | |
fAspectRatio | 40 | アスペクト比
水平解像度と垂直解像度を別々に指定できる場合、以下の計算式で対応する 垂直解像度 = fResolution / fAspectRatio |
|
fQuality | 44 | 圧縮率(%) | |
lTransparent | 48 | 透過モード(0:なし、1:指定パレット、2:色指定) | |
lTransparentIndex | 52 | 透過パレットインデックス | |
rgbTransparentColor | 56 | 透過背景色 | |
pszComment | 60 | コメント('\0'で終了する文字列へのポインタ) |
共通エラーコード | ||||
定数名(XPI.hで定義) | 数値 | 説明 | ||
ERR_SPI_NoError | 0 | 正常終了 | ||
ERR_SPI_NotImplement | -1 | その機能はインプリメントされていない | ||
ERR_SPI_StopOperation | 1 | コールバック関数が非0を返したので展開を中止した | ||
ERR_SPI_UnknownFormat | 2 | 未知のフォーマット | ||
ERR_SPI_CrashData | 3 | データが壊れている | ||
ERR_SPI_AllocMemory | 4 | メモリーが確保出来ない | ||
ERR_SPI_OtherMemory | 5 | メモリーエラー(Lock出来ない、等) | ||
ERR_SPI_FileRead | 6 | ファイルリードエラー | ||
ERR_SPI_Reserve | 7 | (予約) | ||
ERR_SPI_Inside | 8 | 内部エラー | ||
出力プラグイン独自コード | ||||
定数名(XPI.hで定義) | 数値 | 説明 | ||
ERR_XPI_InputImageNum | 100 | 入力画像数が違う | ||
ERR_XPI_OutpuImageNum | 101 | 出力画像数が違う | ||
ERR_XPI_OptionParam | 102 | オプションパラメータがおかしい | ||
ERR_XPI_InputImage | 103 | 入力画像がおかしい | ||
ERR_XPI_Pointer | 104 | データポインタエラー | ||
ERR_XPI_FileWrite_ | 105 | ファイルライトエラー | ||
ERR_XPI_NotSupportColor | 106 | サポートされていない色数 |
6.仕様の変更
基本的に本プラグイン仕様書はSusieの出力プラグインの仕様が確定するまでの暫定バージョンである。
いつ、仕様が変更されるか保障できない。
Goto HomePage |
|
2000/2/12 更新
|