>>> Continued from previous message
BITMAPINFOHEADER (3.0)
typedef struct tagBITMAPINFOHEADER { /* bmih */
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
The BITMAPINFOHEADER structure contains information about the dimensions
and color format of
a Windows 3.0 or later device-independent bitmap (DIB).
Member Description
biSize Specifies the number of bytes required by the
BITMAPINFOHEADER
structure.
biWidth Specifies the width of the bitmap, in pixels.
biHeight Specifies the height of the bitmap, in pixels.
biPlanes Specifies the number of planes for the target device.
This member must be set
to 1.
biBitCount Specifies the number of bits per pixel. This value
must be 1, 4, 8, or 24.
biCompression Specifies the type of compression for a compressed
bitmap. It can be one of
the following values:
Value Meaning
BI_RGB Specifies that the bitmap is not compressed.
BI_RLE8 Specifies a run-length encoded 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 the following Comments section.
BI_RLE4 Specifies a run-length encoded 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 the following Comments section.
biSizeImage Specifies the size, in bytes, of the image. It is
valid to set this member to zero if
the bitmap is in the BI_RGB format.
biXPelsPerMeter Specifies the horizontal resolution, in pixels
per meter, of the target device for
the bitmap. An application can use this value to select a bitmap from a
resource group that best matches the characteristics of the current
device.
biYPelsPerMeter Specifies the vertical resolution, in pixels per
meter, of the target device for the
bitmap.
biClrUsed Specifies the number of color indexes in the color
table actually used by the
bitmap. If this value is zero, the bitmap uses the maximum number of
colors
corresponding to the value of the biBitCount member. For more
information
on the maximum sizes of the color table, see the description of the
BITMAPINFO structure earlier in this topic.
If the biClrUsed member is nonzero, it specifies the actual number of
colors
that the graphics engine or device driver will access if the biBitCount
member is less than 24. If biBitCount is set to 24, biClrUsed specifies
the
size of the reference color table used to optimize performance of
Windows
color palettes.
If the bitmap is a packed bitmap (that is, a bitmap in which the bitmap
array
immediately follows the BITMAPINFO header and which is referenced by a
single pointer), the biClrUsed member must be set to zero or to the
actual
size of the color table.
biClrImportant Specifies the number of color indexes that are
considered important for
displaying the bitmap. If this value is zero, all colors are important.
Comments
The BITMAPINFO structure combines the BITMAPINFOHEADER structure and a
color table to provide a complete definition of the dimensions and
colors of a Windows 3.0 or later DIB. For more information about
specifying a Windows 3.0 DIB, see the description of the BITMAPINFO
structure.
An application should use the information stored in the biSize member to
locate the color table in a BITMAPINFO structure as follows:
pColor = ((LPSTR) pBitmapInfo + (WORD) (pBitmapInfo->bmiHeader.biSize))
Windows supports formats for compressing bitmaps that define their
colors with 8 bits per pixel and with 4 bits per pixel. Compression
reduces the disk and memory storage required for the bitmap. The
following paragraphs describe these formats.
BI_RLE8
When the biCompression member is set to BI_RLE8, the bitmap is
compressed using a run-length encoding format for an 8-bit bitmap. This
format may be compressed in either of two modes: encoded and absolute.
Both modes can occur anywhere throughout a single bitmap. Encoded mode
consists of two bytes: the first byte specifies the number of
consecutive pixels to be drawn using the color index contained in the
second byte. In addition, the first byte of the pair can be set to zero
to indicate an escape that denotes an end of line, end of bitmap, or a
delta. The interpretation of the escape depends on the value of the
second byte of the pair. The following list shows the meaning of the
second byte:
Value Meaning
0 End of line.
1 End of bitmap.
2 Delta. The two bytes following the escape contain unsigned
values indicating the horizontal
and vertical offset of the next pixel from the current position.
Absolute mode is signaled by the first byte set to zero and the second
byte set to a value between 0x03 and 0xFF. In absolute mode, the second
byte represents the number of bytes that follow, each of which contains
the color index of a single pixel. When the second byte is set to 2 or
less, the escape has the same meaning as in encoded mode. In absolute
mode, each run must be aligned on a word boundary. The following example
shows the hexadecimal values of an 8-bit compressed bitmap:
>>> Continued to next message
* SLMR 2.1a * We all live in a yellow subroutine.
--- FMail 0.92
---------------
* Origin: The Programmer's Oasis on FIDONET! (1:348/203)
|