#pragma pack(push, 1)
typedef struct tagBITMAPFILEHEADER
{
Word bfType; //òèï ôàéëà (äëÿ áèòîâîãî îáðàçà - BM)
Dword bfSize; //ðàçìåð ôàéëà â dword
Word bfReserved1; //íå èñïîëüçóåòñÿ
Word bfReserved2; //íå èñïîëüçóåòñÿ
Dword bfOffbits; //ñìåùåíèå äàííûõ áèòîâîãî îáðàçà îò çàãîëîâêà â áàéòàõ
} tagBITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER
{
Dword biSize; //÷èñëî áàéò, çàíèìàåìûõ ñòðóêòóðîé BITMAPINFOHEADER
Dword biWidth; //øèðèíà áèòîâîãî îáðàçà â ïèêñåëàõ
Dword biHeight; //âûñîòà áèòîâîãî îáðàçà â ïèêñåëàõ
Word biPlanes; //÷èñëî áèòîâûõ ïëîñêîñòåé óñòðîéñòâà
Word biBitCount; //÷èñëî áèòîâ íà ïèêñåëü
Dword biCompression; //òèï ñæàòèÿ
Dword biSizeImage; //ðàçìåð êàðòèíêè â áàéòàõ
Dword biXPelsPerMeter; //ãîðèçîíòàëüíîå ðàçðåøåíèå óñòðîéñòâà, ïèêñåë/ì
Dword biYPelPerMeter; //âåðòèêàëüíîå ðàçðåøåíèå óñòðîéñòâà, ïèêñåë/ì
Dword biClrUsed; //÷èñëî èñïîëüçóåìûõ öâåòîâ
Dword biClrImportant; //÷èñëî "âàæíûõ" öâåòîâ
} tagBITMAPINFOHEADER;
typedef struct tagRGBQUAD
{
Byte rgbBlue;
Byte rgbGreen;
Byte rgbRed;
Byte rgbReserved;
} tagRGBQUAD;
#pragma pack(pop)
class BMPFile
{
protected:
tagBITMAPFILEHEADER Bmp_head;
tagBITMAPINFOHEADER Info_head;
public:
Dword width;
Dword height;
Byte* buffer;
int BMPFile::LoadBMPFile(Byte* filebuff, Dword filesize);
};