programmers resources
  http://www.intel-assembler.it/  (c)2017 intel-assembler.it   info@intel-assembler.it
 
Search :  
Lingua Italiana    English Language   
Index
 
just an empty assembly space
just an arrow Intel Platform
just an arrow Article & Guides
just an arrow Download Software


23/01/2009 Featured Article: How to remove Buzus Virus (permalink)




:::3140665:::
Bottone Scambio Directory Pubblicitaonline.it
Home Page | Articles & Guides | Download | Intel Platform | Contacts

Google
 


Bookmark and Share
Download 
Tell a friend



BMP Bitmap file format

A description of the BMP format for programmers

(by unknown)

A guide on BMP format for C programmers. The specification explains how bitmaps are handled and shows C language data structures.
This article is online from 2966 days and has been seen 9771 times


(*** download for full text ***)


BITMAPFILEHEADER  [3.0]

Bitmap File Information
The BITMAPFILEHEADER data structure contains information about the
 type, 
size, and layout of a device-independent bitmap (DIB) file.

typedef struct tagBITMAPFILEHEADER {
        WORD    bfType;
        DWORD   bfSize;
        WORD    bfReserved1;
        WORD    bfReserved2;
        DWORD   bfOffBits;
} BITMAPFILEHEADER;

The BITMAPFILEHEADER data structure contains the following fields:

Field Description
bfType Specifies the type of file. It must be BM.
bfSize Specifies the size in DWORDs of the file. 
bfReserved1 Is reserved and must be set to zero. 
bfReserved2 Is reserved and must be set to zero. 
bfOffBits Specifies in bytes the offset from the BITMAPFILEHEADER 
of the actual bitmap in the file. 

Comments A BITMAPINFO or BITMAPCOREINFO data structure immediately
 
follows the BITMAPFILEHEADER structure in the DIB file.


BITMAPINFO  [3.0]

Device-Indpendent Bitmap Information
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 contain
s information about the dimensions and color format of a device-in
dependent bitmap. 
bmiColors Specifies an array of RGBQUAD data structures that defin
e the colors in the bitmap.  

Comments: A Windows 3.0 device-independent bitmap consists of two 
distinct parts: a BITMAPINFO data structure that describes the dim
ensions and colors of the bitmap, and an array of bytes that defin
e the pixels of the bitmap. The bits in the array are packed toget
her, but each scan line must be zero-padded to end on a LONG bound
ary. Segment boundaries can 
appear anywhere in the bitmap, however. The origin of the bitmap i
s 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 follo
wing 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 2^24 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 th
e 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 ma
ximum number of colors corresponding to the value of the biBitCoun
t field.

The colors in the bmiColors table should appear in order of import
ance.

Alternatively, for functions that use device-independent bitmaps, 
the bmiColors field can be an array of 16-bit unsigned integers th
at specify an index into the currently realized logical palette in
stead of explicit RGB values. In this case, an application using t
he 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 th
e bitmap is to be stored in a file or transferred to another appli
cation. Unless the application uses the bitmap exclusively and und
er its complete control, the bitmap color table should contain exp
licit RGB values.

BITMAPINFOHEADER  [3.0]

Device-Independent Bitmap Format Information
The BITMAPINFOHEADER structure contains information about the dime
nsions and color format of a Windows 3.0 device-independent bitmap
.

typedef struct tagBITMAPINFOHEADER{
   DWORD  biSize;
   DWORD  biWidth;
   DWORD  biHeight;
   WORD   biPlanes;
   WORD   biBitCount
   DWORD  biCompression;
   DWORD  biSizeImage;
   DWORD  biXPelsPerMeter;
   DWORD  biYPelsPerMeter;
   DWORD  biClrUsed;
   DWORD  biClrImportant;
} BITMAPINFOHEADER;

The BITMAPINFOHEADER structure has the following fields:

Field 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 and
  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 two-byte 
format consisting of a count byte 
followed by a byte containing a color 
index. See the following 'Comments' 
section for more information.
BI_RLE4 Specifies a run-length encoded format 
for bitmaps with 4 bits per pixel. The 
compression format is a two-byte 
format consisting of a count byte 
followed by two word-length color 
indexes. See the following 'Comments' 
section for more information.
biSizeImage Specifies the size in bytes of the image. 
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 matc
hes the characteristics of the current device. 
biYPelsPerMeter Specifies the vertical resolution in pixels per me
ter 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 0, the 
bitmap uses the maximum number of colors corresponding 
to the value of the biBitCount field. See the 
description of the BITMAPINFO data structure earlier in 
this chapter for more information on the maximum sizes 
of the color table. If biClrUsed is nonzero, then the 
biClrUsed field specifies the actual number of colors 
which the graphics engine or device driver will access 
if the biBitCount field is less than 24. If the 
biBitCount field is set to 24, the biClrUsed field 
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 field must be set to 0 or to the 
actual size of the color table. 
biClrImportant Specifies the number of color indexes that are cons
idered important for displaying the bitmap. If this value is 0, th
en all colors are important. 

Comments: The BITMAPINFO data structure combines the BITMAPINFOHEA
DER structure and a color table to provide a complete definition o
f the dimensions and colors of a Windows 3.0 
device-independent bitmap. See the description of the BITMAPINFO d
ata structure for more information about specifying a Windows 3.0 
device-independent bitmap.

An application should use the information stored in the biSize fie
ld to locate the color table in a BITMAPINFO data structure with a
 method such as the following:

pColor = ((LPSTR) pBitmapInfo + (WORD) (pBitmapInfo -> biSize))

Bitmap Compression Formats Windows supports formats for compressin

bitmaps that define their colors with 8 bits per pixel and with 4 
bits 
per pixel. Compression reduces the disk and memory storage require
d for 
the bitmap. The following paragraphs describe these formats.

When the biCompression field is set to BI_RLE8, the bitmap is comp
ressed using a run-length encoding format for an 8-bit bitmap. Thi
s format may be compressed in either of two modes:

7 Encoded
7 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 con
tained 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 l
ine, end of bitmap, or a 
delta. The interpretation of the escape depends on the value of th
e second byte of the pair. The following list shows the meaning of
 the second byte:

Second Byte
Of Escape
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 signalled by the first byte set to zero and the s
econd byte set to a value between 03H and FFH. In absolute mode, t
he second byte represents the number of bytes which follow, each o
f which contains the color index of a single pixel. When the secon
d 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.

(*** download for full text ***)


Top
Download 
Tell a friend
Bookmark and Share



Similar Articles

Compuserve Graphics Interchange Format
Gif87a and Gif89a specification format
(by Compuserve)

General Format of a ZIP file
Format specification from Pkware
(by Pkware)

JPEG specification ITU CCITT T.81
In 186 pages the compressor's specification
(by CCITT ITU)

LZW and GIF explained
LZ Compression and Compuserve GIF specification
(by Steve Blackstock)

RIFF WAVE (.WAV) file format
Explains WAV file format specifications
(by Rob Ryan)

Standard MIDI File Format
Specification of the midi format v.1.1
(by The International MIDI Association)

TIFF Revision 6 Specification Document
This 121 page document describes TIFF
(by Adobe Systems Inc.)

 Tags: graphic spec, file format


webmaster jes
writers rguru, tech-g, aiguru, drAx

site optimized for IE/Firefox/Chrome with 1024x768 resolution

Valid HTML 4.01 Transitional


ALL TRADEMARKS ® ARE PROPERTY OF LEGITTIMATE OWNERS.
© ALL RIGHTS RESERVED.

hosting&web - www.accademia3.it

grossocactus
find rguru on
http://www.twitter.com/sicurezza3/
... send an email ...
Your name

Destination email

Message

captcha! Code