summaryrefslogtreecommitdiffhomepage
path: root/nGenEx/Bmp.h
blob: 663bec9d02cd239377b9366ddc1a37aaf1e6d747 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*  Project nGenEx
	Destroyer Studios LLC
	Copyright © 1997-2004. All Rights Reserved.

	SUBSYSTEM:    nGenEx.lib
	FILE:         Bmp.h
	AUTHOR:       John DiCamillo


	OVERVIEW
	========
	BMP image file loader
*/

#ifndef BMP_H
#define BMP_H

// +--------------------------------------------------------------------+

enum { BMP_OK, BMP_NOMEM, BMP_INVALID, BMP_NOFILE };

struct BmpFileHeader
{
	WORD  type;
	DWORD size;
	WORD  rsvd1;
	WORD  rsvd2;
	DWORD offset;
};

struct BmpInfoHeader
{
	DWORD hdr_size;
	DWORD width;
	DWORD height;
	WORD  planes;
	WORD  bit_count;
	DWORD compression;
	DWORD img_size;
	DWORD x_pixels_per_meter;
	DWORD y_pixels_per_meter;
	DWORD colors_used;
	DWORD colors_important;
};

const int BMP_FILE_HDR_SIZE = 14;
const int BMP_INFO_HDR_SIZE = 40;

// +--------------------------------------------------------------------+

struct BmpImage
{
	static const char* TYPENAME() { return "BmpImage"; }

	BmpImage(short w, short h, unsigned long* hibits);

	BmpImage();
	~BmpImage();

	int Load(char *filename);
	int Save(char *filename);

	int LoadBuffer(unsigned char* buf, int len);

	BmpFileHeader  file_hdr;
	BmpInfoHeader  info_hdr;
	DWORD          palette[256];
	DWORD*         image;
	WORD           width;
	WORD           height;
};

// +--------------------------------------------------------------------+


#endif BMP_H