home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2001 January
/
VPR0101A.BIN
/
OLS
/
LZR100
/
lzr100.lzh
/
Source
/
SPIMain.h
< prev
next >
Wrap
C/C++ Source or Header
|
2000-10-07
|
13KB
|
274 lines
/*--------------------------------------------------------------------------------------*/
/* Susie Plug-in (00IN-type) 汎用ヘッダ */
/* for VisualStudio6.0 only */
/* ※このファイルは変更する必要ありません。全てのOOIN系プラグインで共通です。 */
/* Copyright (C) 2000 DJ☆Uchi [H.Uchida] */
/*--------------------------------------------------------------------------------------*/
#include <windows.h>
#ifndef SUSIE_SPI_API_H
#define SUSIE_SPI_API_H
#define _export __declspec(dllexport)
#ifdef __cplusplus
extern "C" {
#endif
/*------ Plug-inに関する情報を得る -----------------------------------------------------*/
/* GetPluginInfo(infono, buff, buflen) */
/* */
/* 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以降は二つづつ組みでSusieのOPENダイアログで用いる情報です。 */
/* 一つのplug-inで複数の画像フォーマットに対応している場合は */
/* その数だけ拡張子とファイル形式名を用意します。 */
/* */
/* 今後の拡張性を持たせるため、Plug-inにAPIのバージョン番号がつきます。 */
/* このバージョン番号はすべてのバージョンに共通である関数'GETPLUGININFO' */
/* によって取得出来ます。 */
/* バージョン番号は基本的に4byteのコードで以下の意味を持ちます。 */
/* */
/* 00 I N */
/* ~T T T */
/* | | +-- N : Normal, M : Multi-picture */
/* | +---- I : Import filter, X : Export filter, A : Archive extractor */
/* +------ Virsion No. */
/*--------------------------------------------------------------------------------------*/
int _export PASCAL GetPluginInfo (int infono, LPSTR buf, int buflen);
/*----- 展開可能な(対応している)ファイル形式か調べる ----------------------------------*/
/* IsSupported(filename, dw) */
/* */
/* Parameter: */
/* LPSTR filename : ファイルネーム */
/* DWORD dw : */
/* 上位ワードが 0 のとき: */
/* ファイルハンドル */
/* 上位ワードが 非0 のとき: */
/* ファイル先頭部(2Kbyte以上)を読み込んだバッファへのポインタ。 */
/* ファイルサイズが2Kbyte以下の場合もバッファは2Kbyte確保し、 */
/* 余分は 0 で埋めること */
/* */
/* Return: */
/* 対応している画像フォーマットであれば非0を返す */
/* */
/* 解説: */
/* 各Plug-inは基本的に渡されたファイルのヘッダを調べ、自分の対応した */
/* ファイルフォーマットであるかどうかを調べる。 */
/* まれにファイル名(拡張子)を判断材料として必要としたり、複数のファイルで */
/* 構成されている場合があるので、ファイル名(フルパス)も引数に加えた。 */
/*--------------------------------------------------------------------------------------*/
int _export PASCAL IsSupported (LPSTR filename, DWORD dw);
/*------- 画像ファイルに関する情報を得る -----------------------------------------------*/
/* GetPictureInfo(LPSTR buf, long len, unsigned int flag, struct PictureInfo *lpInfo); */
/* */
/* Parameter: */
/* LPSTR buf : */
/* 入力がファイルの場合: */
/* ファイル名 */
/* メモリーの場合: */
/* ファイルイメージへのポインタ */
/* long len : */
/* 入力がファイルの場合: */
/* 読込み開始オフセット(MacBin対応のため) */
/* メモリーの場合: */
/* データサイズ */
/* unsigned int flag : 追加情報 xxxx xxxx xxxx xSSS */
/* SSS : 入力形式 */
/* 0 : ディスクファイル */
/* 1 : メモリ上のイメージ */
/* */
/* Return: */
/* エラーコード。0なら正常終了。 */
/* */
/* struct PictureInfo *lpInfo : */
/* struct PictureInfo { */
/* long left,top; 画像を展開する位置 */
/* long width; 画像の幅(pixel) */
/* long height; 画像の高さ(pixel) */
/* WORD x_density; 画素の水平方向密度 */
/* WORD y_density; 画素の垂直方向密度 */
/* short colorDepth; 1画素当たりのbit数 */
/* HLOCAL hInfo; 画像内のテキスト情報 */
/* }; */
/* */
/* hInfoには必要に応じてPlug-inが確保したGlobalメモリーのハンドルが格納される。 */
/*--------------------------------------------------------------------------------------*/
#include <pshpack1.h> //構造体のメンバ境界を1バイトにする
typedef struct PictureInfo {
long left,top;
long width;
long height;
WORD x_density;
WORD y_density;
short colorDepth;
HLOCAL hInfo;
} PictureInfo;
#include <poppack.h>
int _export PASCAL GetPictureInfo (LPSTR buf, long len, unsigned int flag, PictureInfo *lpInfo);
/*------ 画像を展開する ----------------------------------------------------------------*/
/* GetPicture ( */
/* LPSTR buf, long len, unsigned int flag, */
/* HANDLE *pHBInfo, HANDLE *pHBm, */
/* FARPROC lpPrgressCallback, long lData); */
/* */
/* Parameter: */
/* LPSTR buf : */
/* 入力がファイルの場合: */
/* ファイル名 */
/* メモリーの場合: */
/* ファイルイメージへのポインタ */
/* long len : */
/* 入力がファイルの場合: */
/* 読込み開始オフセット(MacBin対応のため) */
/* メモリーの場合: */
/* データサイズ */
/* unsigned int flag : 追加情報 xxxx xxxx xxxx xSSS */
/* SSS : 入力形式 */
/* 0 : ディスクファイル */
/* 1 : メモリ上のイメージ */
/* HLOCAL *pHBInfo : BITMAPINFO 構造体が納められたメモリハンドルが返される */
/* HLOCAL *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データ。 */
/* ポインタ等を必要に応じて受け渡せる。 */
/* */
/* Return: */
/* エラーコード。0なら正常終了。 */
/* */
/* 解説: */
/* プラグインはLocalAllocによって必要なメモリーを確保し、そのハンドルを返す。 */
/* アプリケーションはLocalFreeによってメモリーを開放する必要がある。 */
/*--------------------------------------------------------------------------------------*/
typedef int (CALLBACK *SPI_PROGRESS)(int, int, long);
int _export PASCAL GetPicture (
LPSTR buf, long len, unsigned int flag,
HANDLE *pHBInfo, HANDLE *pHBm,
SPI_PROGRESS lpPrgressCallback, long lData);
/*----- プレビュー・カタログ表示用画像縮小展開ルーティン -------------------------------*/
/* GetPreview ( */
/* LPSTR buf, long len, unsigned int flag, */
/* HANDLE *pHBInfo, HANDLE *pHBm, */
/* FARPROC lpPrgressCallback, long lData); */
/* */
/* Parameter: */
/* GetPicture() 参照。 */
/* */
/* Return: */
/* エラーコード。0なら正常終了。 */
/* この関数はオプションであり、未対応の場合は -1 を返す。 */
/* */
/* 解説: */
/* プレビュー等で用いる縮小された画像をファイルから作成する。 */
/* JPEGの様に、アルゴリズムの関係で縮小されたサイズでは高速に展開出来る */
/* ときにこの関数をインプリメントする。 */
/* 未対応の場合、Susieは通常の展開ルーティンを用いて展開した後 */
/* 縮小処理を行う。 */
/* (対応していても縮小ロードされた画像を更にサイズ調整している) */
/* プラグインはLocalAllocによって必要なメモリーを確保し、そのハンドルを返す。 */
/* アプリケーションはLocalFreeによってメモリーを開放する必要がある。 */
/*--------------------------------------------------------------------------------------*/
int _export PASCAL GetPreview (
LPSTR buf, long len, unsigned int flag,
HANDLE *pHBInfo, HANDLE *pHBm,
FARPROC lpPrgressCallback, long lData);
/*----- Plug-inの設定ダイアログ表示関数(Susie32 v0.40より追加されたAPI) ----------------*/
/* ConfigurationDlg(HWND parent, int fnc); */
/* */
/* Parameter: */
/* HWND parent : 親ウィンドウのHWND */
/* int fnc : 機能コード */
/* 0 : Plug-inのaboutダイアログ表示(必要であれば) */
/* 1 : 設定ダイアログ表示 */
/* 2以降 : 予約 */
/* */
/* Return: */
/* エラーコード: */
/* 0 : 正常終了 */
/* -1 : インプリメントしていない */
/* >0 : エラー(正の値) -> 他の関数のエラーコードと同じ? */
/*--------------------------------------------------------------------------------------*/
enum {
SUSIE_CONFIGDLG_ABOUT= 0,
SUSIE_CONFIGDLG_SETTING,
SUSIE_CONFIGDLG_RESERVED
};
int _export FAR PASCAL ConfigurationDlg(HWND parent, int fnc);
/*--------------------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
/*----- ファイル形式別拡張関数 ---------------------------------------------------------*/
/* これらの関数により、ファイル形式の違いによる実装ファイルの差異を吸収している。 */
/* また、入力がファイルかメモリかの違いも吸収する。 */
/*--------------------------------------------------------------------------------------*/
#define HEADBUF_SIZE 2000 //ファイル先頭から切り出すバイト数
BOOL IsSupportedEx(char *filename, char *data);
int GetPictureInfoEx(long datasize, struct PictureInfo *lpInfo, char *data);
int GetPictureEx(long datasize, HANDLE *pHBInfo, HANDLE *pHBm,
SPI_PROGRESS lpPrgressCallback, long lData, BYTE *data);
/*----- エラーコード -------------------------------------------------------------------*/
/* Susie 内部で利用されるエラーコード */
/*--------------------------------------------------------------------------------------*/
#define SPI_NO_FUNCTION -1 // その機能はインプリメントされていない
#define SPI_ALL_RIGHT 0 // 正常終了
#define SPI_ABORT 1 // コールバック関数が非0を返したので展開を中止した
#define SPI_NOT_SUPPORT 2 // 未知のフォーマット
#define SPI_OUT_OF_ORDER 3 // データが壊れている
#define SPI_NO_MEMORY 4 // メモリーが確保出来ない
#define SPI_MEMORY_ERROR 5 // メモリーエラー
#define SPI_FILE_READ_ERROR 6 // ファイルリードエラー
#define SPI_WINDOW_ERROR 7 // 窓が開けない (非公開のエラーコード)
#define SPI_OTHER_ERROR 8 // 内部エラー
#define SPI_FILE_WRITE_ERROR 9 // 書き込みエラー (非公開のエラーコード)
#define SPI_END_OF_FILE 10 // ファイル終端 (非公開のエラーコード)
/*--------------------------------------------------------------------------------------*/
#endif /* SUSIE_SPI_API_H */