The BITMAPINFO structure fully defines the dimensions and color information for a Windows 3.0 device-independent bitmap.
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
The BITMAPINFO structure contains the following fields:
Field | Description |
bmiHeader | Specifies a BITMAPINFOHEADER data structure that contains information about the dimensions and color format of a device-independent bitmap. | |
bmiColors | Specifies an array of RGBQUAD data structures that define the colors in the bitmap. |
A Windows 3.0 device-independent bitmap consists of two distinct parts: a BITMAP-INFO data structure that describes the dimensions and colors of the bitmap, and an array of bytes that define the pixels of the bitmap. The bits in the array are packed together, but each scan line must be zero-padded to end on a LONG boundary. Segment boundaries can appear anywhere in the bitmap, however. The origin of the bitmap is the lower-left corner.
The biBitCount field of the BITMAPINFOHEADER structure determines the number of bits which define each pixel and the maximum number of colors in the bitmap. This field may be set to any of the following values:
Value | Meaning |
1 | The bitmap is monochrome, and the bmiColors field must contain 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 field contains up to 16 entries. Each pixel in the bitmap is represented by a four-bit index into the color table. |
For example, if the first byte in the bitmap is 0x1F, then 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 16th table entry. | |
8 | The bitmap has a maximum of 256 colors, and the bmiColors field contains up to 256 entries. In this case, each byte in the array represents a single pixel. |
24 | The bitmap has a maximum of 224 colors. The bmiColors field is NULL, and each three bytes in the bitmap array represents the relative intensities of red, green, and blue, respectively, of a pixel. |
The biClrUsed field of the BITMAPINFOHEADER structure specifies the number of color indexes in the color table actually used by the bitmap. If the biClrUsed field is set to 0, the bitmap uses the maximum number of colors corresponding to the value of the biBitCount field.
The colors in the bmiColors table should appear in order of importance.
Alternatively, for functions that use device-independent bitmaps, the bmiColors field can be an array of 16-bit unsigned integers that specify an index into the currently realized logical palette instead of explicit RGB values. In this case, an application using the bitmap must call device-independent bitmap functions with the wUsage parameter set to DIB_PAL_COLORS.
Note:
The bmiColors field should not contain palette indices if the bitmap is to be stored in a file or transferred to another application. Unless the application uses the bitmap exclusively and under its complete control, the bitmap color table should contain explicit RGB values.