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
|
/* Starshatter: The Open Source Project
Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors
Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
Copyright (c) 1997-2006, Destroyer Studios LLC.
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
|