Microsoft hat mit Windows 4.0 und Windows 95 das Dateiformat für DIBs erweitert. Optional kann eine DIB nun durch eine BITMAPV4HEADER-Struktur anstelle einer BITMAPINFOHEADER Struktur beginnen. Der Beginn der neuen Struktur enthält dieselben Datenfelder wie bei der BITMAPINFOHEADER Struktur, am Ende sind zusätzliche Datenfelder vorhanden. Alle anderen Strukturen (Farbpaletten, Bits) sind dementsprechend nach hinten versetzt. Das Feld biSize gibt an, ob es sich um eine DIB basierend auf BITMAPINFOHEADER oder BITMAPV4HEADER handelt.
biSize | Wert | Bedeutung | |
sizeof(BITMAPCOREHEADER) | 0x0c | OS/2 1.3 kompatible DIB | |
sizeof(BITMAPINFOHEADER) | 0x28 | Windows 3.1 kompatible DIB | |
sizeof(BITMAPV4HEADER) | 0x6c | Windows 95 / NT 4.0 DIB | |
sizeof(BITMAPV5HEADER) | Windows 98 / NT 5.0 DIB |
typedef struct DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER; | typedef struct |
Die Felder der BITMAPV4HEADER-Struktur entsprechen denen der BITMAPINFOHEADER Struktur, jedoch sind zusätzliche Felder vorhanden.
DaVinci verwendet die BITMAPV4HEADER-Struktur, wenn mit DIBs in besonderen Formaten gearbeitet werden muss, deren Informationen in der BITMAPINFOHEADER Struktur nicht dargestellt werden können:
Kennzeichnung einer CMYK-DIB
Als Kennzeichen einer CMYK-DIB dient das Feld bV4CSType (Color Space Type), das folgende Werte annehmen kann:
Symbolische Konstante | Wert | Bedeutung | |
LCS_CALIBRATED_RGB | 0 | die DIB ist im normalisierten sRGB-Farbraum von ICM | |
LCS_DEVICE_RGB | 1 | die DIB ist im RGB-Farbraum des Bildschirms. Dies entspricht der früheren Definition von BITMAPINFOHEADER | |
LCS_DEVICE_CMYK | 2 | die DIB ist im CMYK-Farbraum des Druckers |
Da die DIB mit 8 Bit je CMYK-Komponente abgelegt wird, ist bV4BitCount bzw. biBitCount = 32.
Kennzeichnung einer RGBA-DIB
Als Kennzeichen einer RGBA-DIB wird das Feld bV4AlphaMask auf einen Wert ungleich 0 gesetzt. Da die DIB mit 8 Bit je RGB und Alpha-Komponente abgelegt wird, ist bV4BitCount bzw. biBitCount = 32.
RGBA DIBs werden von Windows-Funktionen wie alle anderen DIBs behandelt, haben aber eine besondere Bedeutung bei der Verwendung der Funktion DIBAlphaBlend.
Die Struktur BITMAPV4HEADER ist bei neueren 32-Bit-Compilern in der Header-Datei WINGDI.H definiert. Bei 16-Bit Compilern ist sie dagegen nicht in WINDOWS.H vorhanden und wird daher in LEONARDO.H definiert.