GetPictureInfo

画像ファイルに関する情報を得る


int _export PASCAL GetPictureInfo (LPSTR buf, long len, unsigned int flag, PictureInfo *lpInfo);

引数 入出力 説明
buf IN
入力がファイルの場合 ファイル名
入力がメモリーの場合 ファイルイメージへのポインタ
len IN
入力がファイルの場合 読み込み開始オフセット(MacBin対応のため)
入力がメモリーの場合 データサイズ
flag IN 追加情報 「xxxx xxxx xxxx xSSS」(ビットフラグとして見る)
SSSは入力の種類を意味する
0 ディスクファイル
1 メモリ上のイメージ
lpInfo OUT 画像情報

戻り値

0なら正常終了、それ以外はエラーコードを返す

解説

指定された画像データに対する、画像情報を返却する。

bufで指定された画像にドキュメントが存在しない時にはlpInfo->hInfoNULLにします。 またlpInfo->hInfo非NULLである場合にこの領域を解放するのは呼び出し側の責任です。

PictureInfo
typedef struct PictureInfo {
        long left,top;          /* 画像を展開する位置 */
        long width;             /* 画像の幅(pixel) */
        long height;            /* 画像の高さ(pixel) */
        WORD x_density;         /* 画素の水平方向密度 */
        WORD y_density;         /* 画素の垂直方向密度 */
        short colorDepth;       /* 画素当たりのbit数 */
        HLOCAL hInfo;           /* 画像内のテキスト情報 */
} PictureInfo;

Susieではこの構造体のアライメント(バイト境界)を1byteと仮定している(他の構造体についても同様の事が言えるかどうかは未確認)。 Visual C++では構造体のデフォルトのアライメントは8byteであるため、このままコンパイルしたのではhInfoにアクセスした際に意図しない値になる。 このためPlug-inが返却するコメントが正しく処理されない現象が起こりえる。 このためVisual C++においてはコンパイルオプションを調整するか、関数を

#include <pshpack1.h>
typedef struct PictureInfo {
           ........
} PictureInfo;
#include <poppack.h>

としなければいけない。Borland C++においては以下のようにする(注:テストしていません)。

#pragma option -a-
typedef struct PictureInfo {
           ........
} PictureInfo;
#pragma option -a.

備考

SusieにおいてはIsSupportedが成功するとその直後に呼び出されるが、 その他のアプリケーションにおいてIsSupportedを呼び出さないで直接 GetPictureInfoを呼び出すものがある。 このため必ずしもサポートしている画像形式がbufに指定されると考えてはいけない。


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



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