summaryrefslogtreecommitdiffhomepage
path: root/nGenEx/Pcx.h
blob: 147f1f81cfdb9a60b3fef1a662e7328e7ed54496 (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
/*  Project nGenEx
	Destroyer Studios LLC
	Copyright © 1997-2004. All Rights Reserved.

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


	OVERVIEW
	========
	PCX image file loader
*/

#ifndef PCX_H
#define PCX_H

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

enum { PCX_OK, PCX_NOMEM, PCX_TOOBIG, PCX_NOFILE };

struct PcxHeader
{
	char  manufacturer;    // Always set to 10
	char  version;         // Always 5 for 256-color files
	char  encoding;        // Always set to 1
	char  bits_per_pixel;  // Should be 8 for 256-color files
	short xmin,ymin;       // Coordinates for top left corner
	short xmax,ymax;       // Width and height of image
	short hres;            // Horizontal resolution of image
	short vres;            // Vertical resolution of image
	char  palette16[48];   // EGA palette; not used for 256-color files
	char  reserved;        // Reserved for future use
	char  color_planes;    // Color planes
	short bytes_per_line;  // Number of bytes in 1 line of pixels
	short palette_type;    // Should be 2 for color palette
	char  filler[58];      // Nothing but junk
};

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

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

	PcxImage(short w, short h, unsigned long* hibits);
	PcxImage(short w, short h, unsigned char* bits, unsigned char* colors);

	PcxImage();
	~PcxImage();

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

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

	PcxHeader      hdr;
	unsigned char* bitmap;
	unsigned long* himap;
	unsigned char  pal[768];
	unsigned long  imagebytes;
	unsigned short width, height;
};

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


#endif