The BITMAPV4HEADER structure is the Windows 95 and Windows NT 4.0 bitmap information header file. Applications written for earlier versions of Windows NT should continue to use BITMAPINFOHEADER. Applications written for Windows NT 5.0 and Windows 98 can use BITMAPV5HEADER.
typedef struct {
DWORD bV4Size;
LONG bV4Width;
LONG bV4Height;
WORD bV4Planes;
WORD bV4BitCount;
DWORD bV4V4Compression;
DWORD bV4SizeImage;
LONG bV4XPelsPerMeter;
LONG bV4YPelsPerMeter;
DWORD bV4ClrUsed;
DWORD bV4ClrImportant;
DWORD bV4RedMask;
DWORD bV4GreenMask;
DWORD bV4BlueMask;
DWORD bV4AlphaMask;
DWORD bV4CSType;
CIEXYZTRIPLE bV4Endpoints;
DWORD bV4GammaRed;
DWORD bV4GammaGreen;
DWORD bV4GammaBlue;
} BITMAPV4HEADER, FAR *LPBITMAPV4HEADER, *PBITMAPV4HEADER;
Windows 98, Windows NT 5.0 and later: If bV4Compression is BI_JPEG, bV4Width specifies the width of the JPEG image in pixels.
If bV4Height is negative, indicating a top-down DIB, bV4Compression must be either BI_RGB or BI_BITFIELDS. Top-down DIBs cannot be compressed.
Windows 98, Windows NT 5.0 and later: If bV4Compression is BI_JPEG, bV4Height specifies the height of the JPEG image in pixels.
Value | Meaning |
---|---|
0 | Windows 98, Windows NT 5.0 and later: The number of bits per pixel is specified or is implied by the JPEG file format. |
1 | The bitmap is monochrome, and the bmiColors member contains two entries. Each bit in the bitmap array represents a pixel. If the bit is clear, the pixel is displayed with the color of the first entry in the bmiColors table; if the bit is set, the pixel has the color of the second entry in the table. |
4 | The bitmap has a maximum of 16 colors, and the bmiColors member contains up to 16 entries. Each pixel in the bitmap is represented by a 4-bit index into the color table. For example, if the first byte in the bitmap is 0x1F, the byte represents two pixels. The first pixel contains the color in the second table entry, and the second pixel contains the color in the sixteenth table entry. |
8 | The bitmap has a maximum of 256 colors, and the bmiColors member contains up to 256 entries. In this case, each byte in the array represents a single pixel. |
16 | The bitmap has a maximum of 2^16 colors. If the bV4Compression member of the BITMAPINFOHEADER is BI_RGB, the bmiColors member is NULL. Each WORD in the bitmap array represents a single pixel. The relative intensities of red, green, and blue are represented with 5 bits for each color component. The value for blue is in the least significant 5 bits, followed by 5 bits each for green and red, respectively. The most significant bit is not used. The bmiColors color table is used for optimizing colors used on palette-based devices, and must contain the number of entries specified by the bV4ClrUsed member of the BITMAPV4HEADER. If the bV4Compression member of the BITMAPV4HEADER is BI_BITFIELDS, the bmiColors member contains three DWORD color masks that specify the red, green, and blue components of each pixel. Each WORD in the bitmap array represents a single pixel. |
24 | The bitmap has a maximum of 2^24 colors, and the bmiColors member is NULL. Each 3-byte triplet in the bitmap array represents the relative intensities of blue, green, and red for a pixel. The bmiColors color table is used for optimizing colors used on palette-based devices, and must contain the number of entries specified by the bV4ClrUsed member of the BITMAPV4HEADER. |
32 | The bitmap has a maximum of 2^32 colors. If the biCompression member of the BITMAPV4HEADER is BI_RGB, the bmiColors member is NULL. Each DWORD in the bitmap array represents the relative intensities of blue, green, and red for a pixel. The high byte in each DWORD is not used. The bmiColors color table is used for optimizing colors used on palette-based devices, and must contain the number of entries specified by the biClrUsed member of the BITMAPV4HEADER. If the bV4Compression member of the BITMAPV4HEADER is BI_BITFIELDS, the bmiColors member contains three DWORD color masks that specify the red, green, and blue components of each pixel. Each DWORD in the bitmap array represents a single pixel. |
Value | Description |
---|---|
BI_RGB | An uncompressed format. |
BI_RLE8 | A run-length encoded (RLE) format for bitmaps with 8 bits per pixel. The compression format is a 2-byte format consisting of a count byte followed by a byte containing a color index. For more information, see Bitmap Compression. |
BI_RLE4 | An RLE format for bitmaps with 4 bits per pixel. The compression format is a 2-byte format consisting of a count byte followed by two word-length color indexes. For more information, see Bitmap Compression. |
BI_BITFIELDS | Specifies that the bitmap is not compressed. The members bV4RedMask, bV4GreenMask, and bV4BlueMask specify the red, green, and blue components for each pixel. This is valid when used with 16- and 32-bit-per-pixel bitmaps. |
BI_JPEG | Windows 98, Windows NT 5.0 and later: Specifies that the image is compressed using the JPEG file interchange format. JPEG compression trades off compression against loss; it can achieve a compression ratio of 20:1 with little noticeable loss. |
Windows 98, Windows NT 5.0 and later: If biCompression is BI_JPEG, bV4SizeImage is the size of the JPEG image buffer.
If bV4ClrUsed is nonzero and the bV4BitCount member is less than 16, the bV4ClrUsed member specifies the actual number of colors the graphics engine or device driver accesses. If bV4BitCount is 16 or greater, the bV4ClrUsed member specifies the size of the color table used to optimize performance of the system color palettes. If bV4BitCount equals 16 or 32, the optimal color palette starts immediately following the BITMAPV4 HEADER.
When the bitmap array immediately follows the BITMAPINFO header, it is a packed bitmap. Packed bitmaps are referenced by a single pointer. Packed bitmaps require that the bV4ClrUsed member be either zero or the actual size of the color table.
Value | Meaning |
---|---|
LCS_CALIBRATED_RGB | This value indicates that endpoints and gamma values are given in the appropriate fields. |
See the LOGCOLORSPACE structure for information that defines a logical color space.
Note A color space is a model for representing color numerically in terms of three or more coordinates. For example, the RGB color space represents colors in terms of the red, green, and blue coordinates.
The BITMAPINFO structure combines the BITMAPV4HEADER structure and a color table to provide a complete definition of the dimensions and colors of a DIB. For more information about DIBs, see Device-Independent Bitmaps and BITMAPINFO .
An application should use the information stored in the bV4Size member to locate the color table in a BITMAPINFO structure, as follows:
pColor = ((LPSTR)pBitmapInfo +
(WORD)(pBitmapInfo->bmiHeader.biSize));
Windows 98, Windows NT 5.0 and later: The BITMAPV4HEADER structure is extended to allow a JPEG image to be passed as the source image to StretchDIBits.
Windows NT: Requires version 4.0 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in wingdi.h.
Bitmaps Overview, Bitmap Structures