kolibrios/programs/demos/cubetext/trunk/bmp.h

143 lines
3.4 KiB
C
Raw Permalink Normal View History

//
// bmp.h - header file / freeware
//
// David Henry - tfc_duke@hotmail.com
//
#ifndef __BITMAP_H_
#define __BITMAP_H_
// magic number "BM"
#define BITMAP_ID ('B' + ('M'<<8))
// header byte type for RLE
#define RLE_COMMAND 0
#define RLE_ENDOFLINE 0
#define RLE_ENDOFBITMAP 1
#define RLE_DELTA 2
#define BI_OS2 -1
// compression type
#define BI_RGB 0
#define BI_RLE8 1
#define BI_RLE4 2
#define BI_BITFIELDS 3
#pragma warning( disable : 4103 )
// --------------------------------------------
// tagBITMAPFILEHEADER - bitmap file header.
// --------------------------------------------
#pragma pack(2)
typedef struct tagBITMAPFILEHEADER // bmfh
{
unsigned short bfType; // magic number "BM"
unsigned int bfSize; // file size
unsigned short bfReserved1; // reserved
unsigned short bfReserved2; // reserved
unsigned int bfOffBits; // offset to bitmap data
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
#pragma pack(4)
// --------------------------------------------
// tagBITMAPCOREHEADER - bitmap core header.
// --------------------------------------------
typedef struct tagBITMAPCOREHEADER // bmch
{
unsigned int bcSize; // size of the structure
unsigned short bcWidth; // image width
unsigned short bcHeight; // image height
unsigned short bcPlanes; // must be equal to 1
unsigned short bcBitCount; // number of bits per pixel
} BITMAPCOREHEADER, *PBITMAPCOREHEADER;
// --------------------------------------------
// tagRGBTRIPLE - 24 bits pixel
// --------------------------------------------
typedef struct tagRGBTRIPLE // rgbt
{
unsigned char rgbtBlue; // blue
unsigned char rgbtGreen; // green
unsigned char rgbtRed; // red
} RGBTRIPLE, *PRGBTRIPLE;
// --------------------------------------------
// tagRGBQUAD - 32 bits pixel
// --------------------------------------------
typedef struct tagRGBQUAD // rgbt
{
unsigned char rgbBlue; // blue
unsigned char rgbGreen; // green
unsigned char rgbRed; // red
unsigned char rgbReserved; // reserved
} RGBQUAD, *PRGBQUAD;
// --------------------------------------------
// tagBITMAPCOREINFO - bitmap core info.
// --------------------------------------------
typedef struct tagBITMAPCOREINFO // bmci
{
BITMAPCOREHEADER bmciHeader; // size of the structure
RGBTRIPLE bcmiColors[1]; // color palette
} BITMAPCOREINFO, *PBITMAPCOREINFO;
// --------------------------------------------
// BITMAPFILEHEADER - bitmap info header.
// --------------------------------------------
typedef struct tagBITMAPINFOHEADER
{
unsigned int biSize; // size of the structure
int biWidth; // image width
int biHeight; // image height
unsigned short biPlanes; // must be equal to 1
unsigned short biBitCount; // number of bits per pixel
unsigned int biCompression; // compression type
unsigned int biSizeImage; // size of data bitmap
int biXPelsPerMeter; // number of pixels per meter on the X axis
int biYPelsPerMeter; // number of pixels per meter on the Y axis
unsigned int biClrUsed; // number of colors used
unsigned int biClrImportant; // number of important colors
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
// prototype
int LoadFileBMP( const char *filename, unsigned char **pixels, int *width, int *height, bool flipvert );
#endif // __BITMAP_H_