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 がメモリに読み込まれると、プロファイル データ (存在する場合) はカラー テーブルに従い、 bV5ProfileData は BITMAPV5HEADER 構造体の先頭からプロファイル データのオフセットを与える必要があります。 ビットマップ ビットがメモリ内のカラー テーブルに従わないので、このメンバーの値は変わります。 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 | 指定したフォルダーとその下にあるすべてのサブディレクトリ内のビットマップを変換します |