/* 出力Plug-in 仕様(暫定版)2000.01.26 */ /* 2000.03.30 説明を補足 */ /* 2001.07.08 CreatePicture はメモリハンドル渡しの他にメモリアドレス渡しを追加。 */ #ifndef EXP_API_H #define EXP_API_H #ifdef _WIN32 #define _export __declspec(dllexport) #endif #include #ifdef __cplusplus extern "C" { #endif /* ----- Plug-inに関する情報を得る ---------------------------------- * GetPluginInfo(int infono, char *buff, int buflen) * Parameter: * int infono : 取得する情報番号 * 0 : Plug-in APIバージョン * 1 : Plug-in名、バージョン及び copyright * 2 : ファイル形式名 * 3 : 代表的な拡張子(ひとつだけ) * 4以降: 予約 * char *buf : 情報を納めるバッファ * int buflen : バッファ長(byte) * * Return: * バッファに書き込んだ文字数を返します。 * 情報番号が無効の場合、0を返します。 * * 解説: * だいたいSusieプラグインに準拠... * バージョン番号は基本的に4byteのコードで以下の意味を持ちます。 * * T0 X N * ~T T T * | | +-- N : Normal * | +---- X : Export filter * +------ Virsion No. * */ int _export __stdcall GetPluginInfo (int infono, char *buf, int buflen); /* ---- 対応可能なファイル形式か確認 ---------------- * IsSupported(int colorDepth); * Parameter: * colorDepth : 画素当たりのbit数 * * Return: * 対応可能であれば非0を返す。 */ int _export __stdcall IsSupported (int colorDepth); #pragma pack(push) #pragma pack(1) //Susie Plug-inのものに同じ typedef struct PictureInfo { long left,top; /* 画像を展開する位置 */ long width; /* 画像の幅(pixel) */ long height; /* 画像の高さ(pixel) */ WORD x_density; /* 画素の水平方向密度 */ WORD y_density; /* 画素の垂直方向密度 */ short colorDepth; /* 画素当たりのbit数 */ HLOCAL hInfo; /* 画像内のテキスト情報 */ } PictureInfo; #pragma pack(pop) /* ----- 画像を変換して保存する --------------------------------------------- * CreatePicture( * char *filepath, unsigned int flag, * HANDLE *pHBInfo,HANDLE *pHBm, PictureInfo *lpInfo, * int (CALLBACK *lpPrgressCallback)(int,int,long), * long lData); * * Parameter: * char *filepath : 保存するファイルのパス * unsigned int flag : 追加情報 * 0 : pHBInfo, pHBm はメモリハンドルへのポインタ(HLOCAL *) * 1 : pHBInfo, pHBm はメモリアドレス(BITMAPINFO *, char *) * HLOCAL *pHBInfo : BITMAPINFO 構造体が納められたメモリ * HLOCAL *pHBm : ビットマップデータ本体のメモリ * PictureInfo *lpInfo : PictureInfo構造体へのポインタ * 注意!:lpInfo->hInfo のみ使用すること * FARPROC lpPrgressCallback : * 途中経過を表示するコールバック関数へのポインタ。 * NULLの場合、plug-inは処理が終了するまでプロセスを占有し、 * 中断も出来ません。 * コールバック関数のprototype: * int PASCAL ProgressCallback( * int nNum,int nDenom,long lData); * まず nNum==0 でコールされ、nNum==nDenom になるまで * 定期的に呼ばれる。 * 戻値が 非0 の時、Plug-inは処理を中断する。 * long lData : コールバック関数に渡すlongデータ。 * ポインタ等を必要に応じて受け渡せる。 * * Return: * エラーコード。0なら正常終了。 * pHBInfo, pHBm, lpInfoはSusie Plug-inが変換した情報が入っている。 * * 解説: * プラグインは画像を変換して保存する。 */ int _export __stdcall CreatePicture ( char *filepath, unsigned int flag, HANDLE *pHBInfo, HANDLE *pHBm, PictureInfo *lpInfo, int (CALLBACK *lpPrgressCallback)(int,int,long), long lData); /* ---- Plug-inの設定ダイアログ ------------------------------------ * ConfigurationDlg(HWND parent,int fnc); * * Parameter: * HWND parent : 親ウィンドウのHWND * int fnc : 機能コード * 0 : Plug-inのaboutダイアログ表示(必要であれば) * 1 : 設定ダイアログ表示 * 2以降: 予約 * * Return: * エラーコード。 * 0: 正常終了 * -1: インプリメントしていない * * */ int _export __stdcall ConfigurationDlg(HWND parent,int fnc); /*-------------------------------------------------------------------------*/ /* エラーコード */ /*-------------------------------------------------------------------------*/ #define XPI_NO_FUNCTION -101 /* その機能はインプリメントされていない */ #define XPI_ALL_RIGHT 0 /* 正常終了 */ #define XPI_ABORT 101 /* コールバック関数が非0を返したので展開を中止した */ #define XPI_NOT_SUPPROT 102 /* 未知のフォーマット */ #define XPI_OUT_OF_ORDER 103 /* データが壊れている */ #define XPI_NO_MEMORY 104 /* メモリーが確保出来ない */ #define XPI_MEMORY_ERROR 105 /* メモリーエラー */ #define XPI_FILE_READ_ERROR 106 /* ファイルリードエラー */ #define XPI_WINDOW_ERROR 107 /* 窓が開けない */ #define XPI_OTHER_ERROR 108 /* 内部エラー */ #define XPI_FILE_WRITE_ERROR 109 /* 書き込みエラー */ #define XPI_END_OF_FILE 110 /* ファイル終端 */ #ifdef __cplusplus } #endif #endif /* EXP_API_H */