次の方法で共有


WCS 1.0 での構造体の使用

WCS 1.0 で使用される構造のほとんどは非常に簡単で、説明はほとんど必要とします。 これらは、「構造体」というタイトルの WCS 1.0 リファレンス セクションに記載 されています

例外は、SetupColorMatchingW 関数で使用される COLORMATCHSETUPW 構造体と、Wingdi.h で定義されている次の Windows 構造体です。

次のトピックでは、より長い長さで説明します。

Windows ビットマップ ヘッダー構造

WCS 1.0 を使用すると、ICC カラー プロファイルをリンクしたり、デバイスに依存しないビットマップ (DIB) に埋め込んだりできます。 これにより、WINDOWS 95 で WCS を使用する場合よりも、DIB の色をより正確に特徴付けできます。 BITMAPV5HEADER (新しいビットマップ ヘッダー構造) は、Windows 98 のリリースの Wingdi.h で定義されています。 開発の目的で、このプログラマー リファレンスと共に Icm.h ファイルにも含まれています。 BITMAPV5HEADER 構造体は次のとおりです。

typedef struct {
    DWORD        bV5Size;
    LONG         bV5Width;
    LONG         bV5Height;
    WORD         bV5Planes;
    WORD         bV5BitCount;
    DWORD        bV5Compression;
    DWORD        bV5SizeImage;
    LONG         bV5XPelsPerMeter;
    LONG         bV5YPelsPerMeter;
    DWORD        bV5ClrUsed;
    DWORD        bV5ClrImportant;
    DWORD        bV5RedMask;
    DWORD        bV5GreenMask;
    DWORD        bV5BlueMask;
    DWORD        bV5AlphaMask;
    DWORD        bV5CSType;
    CIEXYZTRIPLE bV5Endpoints;
    DWORD        bV5GammaRed;
    DWORD        bV5GammaGreen;
    DWORD        bV5GammaBlue;
    DWORD        bV5Intent;         // Rendering intent for bitmap 
    DWORD        bV5ProfileData;    // Offset to profile data 
    DWORD        bV5ProfileSize;    // Size of embedded profile data 
    DWORD        bV5Reserved;       // Should be zero 
} BITMAPV5HEADER, FAR *LPBITMAPV5HEADER, *PBITMAPV5HEADER;

メンバー bV5CSType には、プロファイルを埋め込むか DIB にリンクするかを指定するために、PROFILE_EMBEDDED値またはPROFILE_LINKED値を指定できます。 メンバー bV5ProfileData は、 BITMAPV5HEADER 構造体の先頭からプロファイル データの先頭までのオフセット (バイト単位) です。 プロファイルが埋め込まれている場合、プロファイル データは実際のプロファイルであり、リンクされている場合、プロファイル データはプロファイルの null で終わるファイル名です。 Unicode 文字列にすることはできません。 Windows 文字セットの文字のみで構成する必要があります (コード ページ 1252)。

DIB がメモリに読み込まれると、プロファイル データ (存在する場合) はカラー テーブルに従い、 bV5ProfileDataBITMAPV5HEADER 構造体の先頭からプロファイル データのオフセットを与える必要があります。 ビットマップ ビットがメモリ内のカラー テーブルに従わないので、このメンバーの値は変わります。 DIB をメモリに読み込む後、アプリケーションで bV5ProfileData メンバーを変更する必要があります。

パックされた DIB の場合、プロファイル データは、ファイル形式と同様のビットマップ ビットに従う必要があります。 bV5ProfileData メンバーは、BITMAPV5HEADER 構造体の先頭からのプロファイル データのオフセットを引き続き指定する必要があります。

アプリケーションは、 bV5Size == sizeof ( BITMAPV5HEADER ) ANDbV5CSType がPROFILE_EMBEDDEDまたはPROFILE_LINKEDされている場合にのみ、プロファイル データにアクセスする必要があります。

プロファイルがリンクされている場合、プロファイルのパスには、Win32 CreateFile 関数を使用して開くことができる完全修飾名 (ネットワーク パスを含む) を指定できます。

V4 ヘッダーと V5 ヘッダーの違い

新しいビットマップ構造を操作する場合、BITMAPV4HEADER 構造体と BITMAPV5HEADER 構造体の設定方法の違いを認識すると便利です。

V4 ヘッダー 説明
bV4CSType LCS_CALIBRATED_RGB。 この値は、エンドポイントとガンマが適切なフィールドに指定されることを意味します。 偽の値は問題を引き起こします。
bV4CSType LCS_sRGB。 この値は、ビットマップが sRGB 色空間にあることを意味します (ガンマとエンドポイントは無視されます)。
bV4CSType LCS_WINDOWS_COLOR_SPACE。 この値は、ビットマップが Windows の既定の色空間にあることを意味します。

 

V5 ヘッダー 説明
bV5CSType LCS_CALIBRATED_RGB。 この値は、エンドポイントとガンマが適切なフィールドに指定されることを意味します。 偽の値は問題を引き起こします。
bV5CSType LCS_sRGB。 この値は、ビットマップが sRGB 色空間にあることを意味します (ガンマとエンドポイントは無視されます)。
bV5CSType PROFILE_EMBEDDED。 この値は、 bV5ProfileData が使用するプロファイルを含むメモリ バッファーを指していることを意味します (ガンマとエンドポイントは無視されます)。
bV5CSType PROFILE_LINKED。 この値は、 bV5ProfileData が使用するプロファイルのファイル名を指していることを意味します (ガンマとエンドポイントは無視されます)。
bV5CSType LCS_WINDOWS_COLOR_SPACE。 この値は、ビットマップが Windows の既定の色空間にあることを意味します。

 

古いビットマップを新しい BITMAPV5HEADER 構造体との間で変換するために、Bitmap.exe という名前のコマンド ライン変換ユーティリティ ファイルが WCS 1.0 Programmer's Reference に含まれています。

BitMap.exe: ビットマップ ヘッダーを変換するためのCommand-Line ユーティリティ

Bitmap.exeは、指定したインストール フォルダーの下の \Bin フォルダーにあるコマンド ライン ユーティリティです。 Windows ビットマップのヘッダーを変更し、既存のビットマップを BITMAPINFOHEADER および BITMAPV4HEADER ヘッダー構造から新しい BITMAPV5HEADER 構造体に変換し、もう一度戻せるようにします。 コマンド ライン構文は次のとおりです。

BITMAP [/d] [/1|4|5] [/s] [/f] 
filename

コマンド ライン スイッチには、次の効果があります。

Switch 説明
/d 既定値は、変換されたヘッダーに自動的に入力されます。
/1 指定したビットマップを BITMAPINFOHEADER に変換する
/4 指定したビットマップを BITMAPV4HEADER に変換する
/5 指定したビットマップを BITMAPV5HEADER に変換する
/f ビットマップに適切なヘッダーが既に含まれている場合でも、強制的に変換する
/s 指定したフォルダーとその下にあるすべてのサブディレクトリ内のビットマップを変換します