/*
img_bmp.h - bmp format reference
Copyright (C) 2007 Uncle Mike

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
*/
#ifndef IMG_BMP_H
#define IMG_BMP_H
/*
========================================================================

.BMP image format

========================================================================
*/

#define BI_FILE_HEADER_SIZE 14
#define BI_SIZE 40 // size of bitmap info header.
#if !defined(BI_RGB)
#define BI_RGB		  0	// uncompressed RGB bitmap (defined in wingdi.h)
#define BI_RLE8       1
#define BI_RLE4       2
#define BI_BITFIELDS  3
#define BI_JPEG       4
#define BI_PNG        5
#endif

#pragma pack( push, 1 )
typedef struct
{
	int8_t   id[2];            // bmfh.bfType
	uint32_t fileSize;         // bmfh.bfSize
	uint32_t reserved0;        // bmfh.bfReserved1 + bmfh.bfReserved2
	uint32_t bitmapDataOffset; // bmfh.bfOffBits
	uint32_t bitmapHeaderSize; // bmih.biSize
	int32_t  width;            // bmih.biWidth
	int32_t  height;           // bmih.biHeight
	uint16_t planes;           // bmih.biPlanes
	uint16_t bitsPerPixel;     // bmih.biBitCount
	uint32_t compression;      // bmih.biCompression
	uint32_t bitmapDataSize;   // bmih.biSizeImage
	uint32_t hRes;             // bmih.biXPelsPerMeter
	uint32_t vRes;             // bmih.biYPelsPerMeter
	uint32_t colors;           // bmih.biClrUsed
	uint32_t importantColors;  // bmih.biClrImportant
} bmp_t;
#pragma pack( pop )
#endif // IMG_BMP_H