GetPreview

プレビュー・カタログ表示用画像縮小展開ルーティン


int _export PASCAL GetPreview (LPSTR buf, long len, unsigned int flag, HANDLE *pHBInfo, HANDLE *pHBm, FARPROC lpPrgressCallback, long lData);

引数 入出力 説明
buf IN
入力がファイルの場合 ファイル名
入力がメモリーの場合 ファイルイメージへのポインタ
len IN
入力がファイルの場合 読み込み開始オフセット(MacBin対応のため)
入力がメモリーの場合 データサイズ
flag IN 追加情報 「xxxx xxxx xxxx xSSS」(ビットフラグとして見る)
SSSは入力の種類を意味する
0 ディスクファイル
1 メモリ上のイメージ
pHBInfo OUT BITMAPINFO構造体が納められたメモリハンドルが返される
pHBm OUT ビットマップデータ本体のメモリハンドルが返される
lpPrgressCallback IN 途中経過を表示するコールバック関数へのポインタ。 NULLの場合、Plug-inは処理が終了するまでプロセスを占有し、中断も出来ません。
lData IN コールバック関数に渡すlongデータ。 ポインタなどを必要に応じて受け渡せる。

戻り値

0なら正常終了、それ以外はエラーコードを返す。 この関数はオプションであり、未対応の場合には-1を返す。

解説

プレビュー等で用いる縮小された画像をファイルから作成する。 JPEGの様に、アルゴリズムの関係で縮小されたサイズでは高速に展開出来るときにこの関数をインプリメントする。

今回配布のPlug-in(*1)では IFJPEG.SPI のみ対応(1/4サイズで展開)している。 未対応の場合、Susieは通常の展開ルーティンを用いて展開した後縮小処理を行う。 (対応していても縮小ロードされた画像を更にサイズ調整している) プラグインはLocalAllocによって必要なメモリーを確保し、そのハンドルを返す。 アプリケーションはLocalFreeによってメモリーを開放する必要がある。

関数が成功した場合にpHBInfopHBmのメモリハンドルで確保されている領域を解放するのは呼び出し側の責任である。 またpHBInfo、pHBmで返されるメモリハンドルで確保される領域はアンロックされている。 つまりPlug-in内でメモり領域に対して書き込みをしたあとはLocalUnlockした後に呼び出し側へ戻る。

基本的に縮小して展開する以外はGetPictureと同じである。

コールバック関数

lpPrgressCallbackで渡されるコールバック関数のプロトタイプは次のとおり(C言語の場合)。

    int PASCAL ProgressCallback(int nNum, int nDenom, long lData);

まず nNum==0 でコールされ、nNum==nDenom になるまで定期的に呼ばれる。 戻り値が 非0 の時、Plug-inは処理を中断する。 ProgressCallbackに渡されるlDataはGetPreviewに渡されたlDataである。

例えばコールバック関数内ではユーザからの中断指示をチェックし、 コールバックの戻り値として非0を返却すればPlug-inは途中で展開を中断する。 中断した場合にはGetPreviewは戻り値としてエラーコード(1)を返却する。

参照

GetPicture


00IN GetPluginInfo IsSupported GetPictureInfo GetPicture GetPreview ConfigurationDlg
00AM GetPluginInfo IsSupported GetArchiveInfo GetFileInfo GetFile ConfigurationDlg



目次へ戻る / トップページへ戻る
この文書の無断転載を禁じます
Copyright 竹村嘉人
Copyright kana