home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 January / VPR0101A.BIN / OLS / LZR100 / lzr100.lzh / Source / SPIMain.h < prev    next >
C/C++ Source or Header  |  2000-10-07  |  13KB  |  274 lines

  1. /*--------------------------------------------------------------------------------------*/
  2. /*    Susie Plug-in (00IN-type) 汎用ヘッダ                                                */
  3. /*    for VisualStudio6.0 only                                                            */
  4. /*    ※このファイルは変更する必要ありません。全てのOOIN系プラグインで共通です。            */
  5. /*    Copyright (C) 2000 DJ☆Uchi [H.Uchida]                                                */
  6. /*--------------------------------------------------------------------------------------*/
  7. #include <windows.h>
  8.  
  9. #ifndef    SUSIE_SPI_API_H
  10. #define    SUSIE_SPI_API_H
  11.  
  12. #define    _export    __declspec(dllexport)
  13.  
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17.  
  18.  
  19. /*------ Plug-inに関する情報を得る -----------------------------------------------------*/
  20. /*    GetPluginInfo(infono, buff, buflen)                                                    */
  21. /*                                                                                        */
  22. /*        Parameter:                                                                        */
  23. /*            int    infono    : 取得する情報番号                                                */
  24. /*                0        : Plug-in APIバージョン                                            */
  25. /*                1        : Plug-in名、バージョン及び copyright                            */
  26. /*                            (SusieのAbout..に表示されます)                                */
  27. /*                2n+2    : 代表的な拡張子 ("*.JPG" "*.RGB;*.Q0" など)                    */
  28. /*                2n+3    : ファイル形式名                                                */
  29. /*                            (SusieのOPENダイアログに表示されます)                        */
  30. /*            LPSTR buf    : 情報を納めるバッファ                                            */
  31. /*            int    buflen    : バッファ長(byte)                                                */
  32. /*                                                                                        */
  33. /*        Return:                                                                            */
  34. /*            バッファに書き込んだ文字数を返します。                                        */
  35. /*            情報番号が無効の場合、0を返します。                                            */
  36. /*                                                                                        */
  37. /*        解説:                                                                            */
  38. /*            情報番号0と1はすべてのバージョンで共通とします。                            */
  39. /*            2以降は二つづつ組みでSusieのOPENダイアログで用いる情報です。                */
  40. /*            一つのplug-inで複数の画像フォーマットに対応している場合は                    */
  41. /*            その数だけ拡張子とファイル形式名を用意します。                                */
  42. /*                                                                                        */
  43. /*             今後の拡張性を持たせるため、Plug-inにAPIのバージョン番号がつきます。        */
  44. /*            このバージョン番号はすべてのバージョンに共通である関数'GETPLUGININFO'        */
  45. /*            によって取得出来ます。                                                        */
  46. /*            バージョン番号は基本的に4byteのコードで以下の意味を持ちます。                */
  47. /*                                                                                        */
  48. /*        00 I N                                                                            */
  49. /*        ~T T T                                                                            */
  50. /*         | | +-- N : Normal,  M : Multi-picture                                            */
  51. /*         | +---- I : Import filter, X : Export filter, A : Archive extractor            */
  52. /*         +------ Virsion No.                                                            */
  53. /*--------------------------------------------------------------------------------------*/
  54. int _export PASCAL GetPluginInfo (int infono, LPSTR buf, int buflen);
  55.  
  56.  
  57. /*----- 展開可能な(対応している)ファイル形式か調べる ----------------------------------*/
  58. /*    IsSupported(filename, dw)                                                            */
  59. /*                                                                                        */
  60. /*        Parameter:                                                                        */
  61. /*            LPSTR filename    : ファイルネーム                                            */
  62. /*            DWORD dw        :                                                            */
  63. /*                上位ワードが  0  のとき:                                                */
  64. /*                    ファイルハンドル                                                    */
  65. /*                上位ワードが 非0 のとき:                                                */
  66. /*                    ファイル先頭部(2Kbyte以上)を読み込んだバッファへのポインタ。        */
  67. /*                    ファイルサイズが2Kbyte以下の場合もバッファは2Kbyte確保し、            */
  68. /*                    余分は 0 で埋めること                                                */
  69. /*                                                                                        */
  70. /*        Return:                                                                            */
  71. /*            対応している画像フォーマットであれば非0を返す                                */
  72. /*                                                                                        */
  73. /*        解説:                                                                            */
  74. /*            各Plug-inは基本的に渡されたファイルのヘッダを調べ、自分の対応した            */
  75. /*            ファイルフォーマットであるかどうかを調べる。                                */
  76. /*            まれにファイル名(拡張子)を判断材料として必要としたり、複数のファイルで        */
  77. /*            構成されている場合があるので、ファイル名(フルパス)も引数に加えた。            */
  78. /*--------------------------------------------------------------------------------------*/
  79. int _export PASCAL IsSupported (LPSTR filename, DWORD dw);
  80.  
  81.  
  82. /*------- 画像ファイルに関する情報を得る -----------------------------------------------*/
  83. /*    GetPictureInfo(LPSTR buf, long len, unsigned int flag, struct PictureInfo *lpInfo);    */
  84. /*                                                                                        */
  85. /*        Parameter:                                                                        */
  86. /*            LPSTR buf    :                                                                */
  87. /*                入力がファイルの場合:                                                    */
  88. /*                    ファイル名                                                            */
  89. /*                メモリーの場合:                                                            */
  90. /*                    ファイルイメージへのポインタ                                        */
  91. /*            long len    :                                                                */
  92. /*                入力がファイルの場合:                                                    */
  93. /*                    読込み開始オフセット(MacBin対応のため)                                */
  94. /*                メモリーの場合:                                                            */
  95. /*                    データサイズ                                                        */
  96. /*            unsigned int flag    : 追加情報 xxxx xxxx xxxx xSSS                            */
  97. /*                SSS : 入力形式                                                            */
  98. /*                    0 : ディスクファイル                                                */
  99. /*                    1 : メモリ上のイメージ                                                */
  100. /*                                                                                        */
  101. /*        Return:                                                                            */
  102. /*            エラーコード。0なら正常終了。                                                */
  103. /*                                                                                        */
  104. /*    struct PictureInfo *lpInfo :                                                        */
  105. /*        struct PictureInfo {                                                            */
  106. /*            long left,top;        画像を展開する位置                                        */
  107. /*            long width;            画像の幅(pixel)                                            */
  108. /*            long height;        画像の高さ(pixel)                                        */
  109. /*            WORD x_density;        画素の水平方向密度                                        */
  110. /*            WORD y_density;        画素の垂直方向密度                                        */
  111. /*            short colorDepth;    1画素当たりのbit数                                        */
  112. /*            HLOCAL hInfo;        画像内のテキスト情報                                    */
  113. /*        };                                                                                */
  114. /*                                                                                        */
  115. /*        hInfoには必要に応じてPlug-inが確保したGlobalメモリーのハンドルが格納される。    */
  116. /*--------------------------------------------------------------------------------------*/
  117. #include <pshpack1.h> //構造体のメンバ境界を1バイトにする
  118. typedef struct PictureInfo {
  119.     long left,top;
  120.     long width;
  121.     long height;
  122.     WORD x_density;
  123.     WORD y_density;
  124.     short colorDepth;
  125.     HLOCAL hInfo;
  126. } PictureInfo;
  127. #include <poppack.h>
  128.  
  129. int _export PASCAL GetPictureInfo (LPSTR buf, long len, unsigned int flag, PictureInfo *lpInfo);
  130.  
  131.  
  132. /*------ 画像を展開する ----------------------------------------------------------------*/
  133. /*    GetPicture (                                                                        */
  134. /*            LPSTR buf, long len, unsigned int flag,                                        */
  135. /*            HANDLE *pHBInfo, HANDLE *pHBm,                                                */
  136. /*            FARPROC lpPrgressCallback, long lData);                                        */
  137. /*                                                                                        */
  138. /*        Parameter:                                                                        */
  139. /*            LPSTR buf    :                                                                */
  140. /*                入力がファイルの場合:                                                    */
  141. /*                    ファイル名                                                            */
  142. /*                メモリーの場合:                                                            */
  143. /*                    ファイルイメージへのポインタ                                        */
  144. /*            long len    :                                                                */
  145. /*                入力がファイルの場合:                                                    */
  146. /*                    読込み開始オフセット(MacBin対応のため)                                */
  147. /*                メモリーの場合:                                                            */
  148. /*                    データサイズ                                                        */
  149. /*            unsigned int flag    : 追加情報 xxxx xxxx xxxx xSSS                            */
  150. /*                SSS : 入力形式                                                            */
  151. /*                    0 : ディスクファイル                                                */
  152. /*                    1 : メモリ上のイメージ                                                */
  153. /*            HLOCAL *pHBInfo    : BITMAPINFO 構造体が納められたメモリハンドルが返される        */
  154. /*            HLOCAL *pHBm    : ビットマップデータ本体のメモリハンドルが返される            */
  155. /*            FARPROC lpPrgressCallback    :                                                */
  156. /*                途中経過を表示するコールバック関数へのポインタ。                        */
  157. /*                MakeProcInstance を用いて求める。                                        */
  158. /*                NULLの場合、plug-inは処理が終了するまでプロセスを占有し、                */
  159. /*                中断も出来ません。                                                        */
  160. /*                コールバック関数のprototype:                                            */
  161. /*                    int PASCAL ProgressCallback(int nNum, int nDenom, long lData);        */
  162. /*                    まず nNum==0 でコールされ、nNum==nDenom になるまで                    */
  163. /*                    定期的に呼ばれる。                                                    */
  164. /*                    戻値が 非0 の時、Plug-inは処理を中断する。                            */
  165. /*            long lData    : コールバック関数に渡すlongデータ。                            */
  166. /*                ポインタ等を必要に応じて受け渡せる。                                    */
  167. /*                                                                                        */
  168. /*        Return:                                                                            */
  169. /*            エラーコード。0なら正常終了。                                                */
  170. /*                                                                                        */
  171. /*        解説:                                                                            */
  172. /*            プラグインはLocalAllocによって必要なメモリーを確保し、そのハンドルを返す。    */
  173. /*            アプリケーションはLocalFreeによってメモリーを開放する必要がある。            */
  174. /*--------------------------------------------------------------------------------------*/
  175. typedef int (CALLBACK *SPI_PROGRESS)(int, int, long);
  176.  
  177. int _export PASCAL GetPicture (
  178.             LPSTR buf, long len, unsigned int flag,
  179.             HANDLE *pHBInfo, HANDLE *pHBm,
  180.             SPI_PROGRESS lpPrgressCallback, long lData);
  181.  
  182.  
  183. /*----- プレビュー・カタログ表示用画像縮小展開ルーティン -------------------------------*/
  184. /*    GetPreview (                                                                        */
  185. /*            LPSTR buf, long len, unsigned int flag,                                        */
  186. /*            HANDLE *pHBInfo, HANDLE *pHBm,                                                */
  187. /*            FARPROC lpPrgressCallback, long lData);                                        */
  188. /*                                                                                        */
  189. /*        Parameter:                                                                        */
  190. /*            GetPicture() 参照。                                                            */
  191. /*                                                                                        */
  192. /*        Return:                                                                            */
  193. /*            エラーコード。0なら正常終了。                                                */
  194. /*            この関数はオプションであり、未対応の場合は -1 を返す。                        */
  195. /*                                                                                        */
  196. /*        解説:                                                                            */
  197. /*            プレビュー等で用いる縮小された画像をファイルから作成する。                    */
  198. /*            JPEGの様に、アルゴリズムの関係で縮小されたサイズでは高速に展開出来る        */
  199. /*            ときにこの関数をインプリメントする。                                        */
  200. /*            未対応の場合、Susieは通常の展開ルーティンを用いて展開した後                    */
  201. /*            縮小処理を行う。                                                            */
  202. /*            (対応していても縮小ロードされた画像を更にサイズ調整している)                */
  203. /*            プラグインはLocalAllocによって必要なメモリーを確保し、そのハンドルを返す。    */
  204. /*            アプリケーションはLocalFreeによってメモリーを開放する必要がある。            */
  205. /*--------------------------------------------------------------------------------------*/
  206. int _export PASCAL GetPreview (
  207.             LPSTR buf, long len, unsigned int flag,
  208.             HANDLE *pHBInfo, HANDLE *pHBm,
  209.             FARPROC lpPrgressCallback, long lData);
  210.  
  211.  
  212. /*----- Plug-inの設定ダイアログ表示関数(Susie32 v0.40より追加されたAPI) ----------------*/
  213. /*    ConfigurationDlg(HWND parent, int fnc);                                                */
  214. /*                                                                                        */
  215. /*        Parameter:                                                                        */
  216. /*            HWND parent    : 親ウィンドウのHWND                                            */
  217. /*            int fnc        : 機能コード                                                    */
  218. /*                    0        : Plug-inのaboutダイアログ表示(必要であれば)                */
  219. /*                    1        : 設定ダイアログ表示                                        */
  220. /*                    2以降    : 予約                                                        */
  221. /*                                                                                        */
  222. /*        Return:                                                                            */
  223. /*            エラーコード:                                                                */
  224. /*                 0    : 正常終了                                                            */
  225. /*                -1    : インプリメントしていない                                            */
  226. /*                >0    : エラー(正の値) -> 他の関数のエラーコードと同じ?                    */
  227. /*--------------------------------------------------------------------------------------*/
  228. enum {
  229.     SUSIE_CONFIGDLG_ABOUT= 0,
  230.     SUSIE_CONFIGDLG_SETTING,
  231.     SUSIE_CONFIGDLG_RESERVED
  232. };
  233. int _export FAR PASCAL ConfigurationDlg(HWND parent, int fnc);
  234.  
  235. /*--------------------------------------------------------------------------------------*/
  236.  
  237. #ifdef __cplusplus
  238. }
  239. #endif
  240.  
  241.  
  242. /*----- ファイル形式別拡張関数 ---------------------------------------------------------*/
  243. /*    これらの関数により、ファイル形式の違いによる実装ファイルの差異を吸収している。        */
  244. /*    また、入力がファイルかメモリかの違いも吸収する。                                    */
  245. /*--------------------------------------------------------------------------------------*/
  246. #define HEADBUF_SIZE    2000    //ファイル先頭から切り出すバイト数
  247.  
  248. BOOL IsSupportedEx(char *filename, char *data);
  249. int GetPictureInfoEx(long datasize, struct PictureInfo *lpInfo, char *data);
  250. int GetPictureEx(long datasize, HANDLE *pHBInfo, HANDLE *pHBm,
  251.     SPI_PROGRESS lpPrgressCallback, long lData, BYTE *data);
  252.  
  253.  
  254. /*----- エラーコード -------------------------------------------------------------------*/
  255. /* Susie 内部で利用されるエラーコード                                                    */
  256. /*--------------------------------------------------------------------------------------*/
  257. #define SPI_NO_FUNCTION            -1    // その機能はインプリメントされていない
  258. #define SPI_ALL_RIGHT             0    // 正常終了
  259. #define SPI_ABORT                 1    // コールバック関数が非0を返したので展開を中止した
  260. #define SPI_NOT_SUPPORT             2    // 未知のフォーマット
  261. #define SPI_OUT_OF_ORDER         3    // データが壊れている
  262. #define SPI_NO_MEMORY             4    // メモリーが確保出来ない
  263. #define SPI_MEMORY_ERROR         5    // メモリーエラー
  264. #define SPI_FILE_READ_ERROR         6    // ファイルリードエラー
  265. #define    SPI_WINDOW_ERROR         7    // 窓が開けない (非公開のエラーコード)
  266. #define SPI_OTHER_ERROR             8    // 内部エラー
  267. #define    SPI_FILE_WRITE_ERROR     9    // 書き込みエラー (非公開のエラーコード)
  268. #define    SPI_END_OF_FILE            10    // ファイル終端 (非公開のエラーコード)
  269.  
  270. /*--------------------------------------------------------------------------------------*/
  271.  
  272. #endif    /* SUSIE_SPI_API_H */
  273.  
  274.