home *** CD-ROM | disk | FTP | other *** search
- /*
- Copyright 1990 by John Wiley & Sons, Inc.
- All Rights Reserved.
- */
- /****************************************/
- /* PCX Header File */
- /* for PCX file access functions */
- /* written in Turbo C 2.0 */
- /* by */
- /* Craig A. Lindley */
- /* */
- /* Vers: 1.0 Last Update: 12/08/89 */
- /****************************************/
-
- #define MAXSCREENWIDTH 640
- #define MAXSCREENHEIGHT 480
- #define BITSPERBYTE 8
- #define MAXPLANES 4
- #define MAXBYTESPERSCAN 320
- #define MAXPALETTECOLORS 16
- #define MAX256PALETTECOLORS 256
-
- /*
- Function Control Equates.
- Controls the DisplayImageInBuf function.
- */
- #define INITVGALOADPALETTE TRUE
- #define NOVGAINIT FALSE
- #define WAITFORKEY TRUE
- #define NOWAITFORKEY FALSE
-
-
- /* Error Bit Definitions */
- #ifndef _CompletionCode_
- #define _CompletionCode_
- typedef int CompletionCode;
- #endif
-
- /* Error bit definitions from PCX code */
- #define NoError 0
- #define EBadParms -1
- #define EFileNotFound -2
- #define EReadFileHdr -3
- #define ENotPCXFile -4
- #define ECorrupt -5
- #define EWrtFileHdr -6
- #define EWrtOutFile -7
- #define EWrtScanLine -8
- #define EPCCFile -9
- #define EGraphics -10
- #define ENoMemory -11
- #define EWrtExtPal -12
-
- /* Misc Error bit definitions */
- #define EKernelSize -21
-
-
-
-
-
- /* PCX File Structures and Defines */
-
- #define PCXHdrTag 10 /* tag in valid PCX file */
- #define MaxRepCount 63 /* max # of repeat bytes */
- #define PCX256ColorTag 12 /* tag for extended palette in PCX file */
-
- /*
- NOTE: compiler must generate BYTE aligned code for this structure to
- contain only three bytes. Otherwise if WORD aligned the stucture will
- contain four bytes and prohibit program operation.
- */
-
- typedef struct
- {
- BYTE Red; /* RGB components of color */
- BYTE Green; /* register */
- BYTE Blue;
- } ColorRegister;
-
-
- struct PCXFileHeader
- {
- BYTE Header; /* marks file as PCX file */
- BYTE Version; /* 0 = version 2.5 */
- /* 2 = 2.8 with palette info */
- /* 3 = no palette info 2.8 or 3.0 */
- /* 5 = 3.0 with palette info */
- BYTE Encode; /* File encoding mode */
- BYTE BitPerPix; /* Bits per pixel */
- unsigned X1; /* Picture dimensions inclusive */
- unsigned Y1;
- unsigned X2;
- unsigned Y2;
- unsigned Hres; /* Graphics adapter Horiz resolution */
- unsigned Vres; /* Graphics adapter Vertical resolution */
- };
-
- struct PCXInfo
- {
- BYTE Vmode; /* Ignor should always be zero */
- BYTE NumOfPlanes; /* Number of bit planes */
- unsigned BytesPerLine; /* Bytes Per Line in picture */
- BYTE unused[60]; /* fills out header to 128 bytes */
- };
-
-
- struct PCX_File
- {
- struct PCXFileHeader PCXHeader;
- ColorRegister Palette[MAXPALETTECOLORS]; /* Max size of 48 bytes */
- struct PCXInfo Info;
- };
-
-
- /* Extended palette data structure for 256 color PCX files */
-
- struct ExtendedPalette
- {
- BYTE ExtendedPalette;
- ColorRegister Palette[MAX256PALETTECOLORS]; /* Max size of 768 bytes */
- };
-
-
- /* Function Declarations */
- void DisplayPCXFile (char *FileName,
- int Verbose); /* display a PCX file */
-
- void WritePCXFile (char *FileName, unsigned BitsPerPixel,
- unsigned MaxX, unsigned MaxY,
- unsigned Planes, unsigned BytesPerLine);
-
- unsigned InstallPCXFilePalette (void); /* Install palette from PCX file */
-
- CompletionCode ReadPCXFileToBuf (char *FileName, BYTE huge * * BufferPtr);
-
- CompletionCode WritePCXFileFromBuf (char *FileName, BYTE huge *ImageMemory);
-
- void DisplayImageInBuf(BYTE huge *Image, unsigned SetMode, unsigned Pause);
-
- CompletionCode ReadRawImageFileToBuf(char *FileName,
- unsigned ImageWidth,
- unsigned ImageHeight,
- BYTE huge * *BufferPtr);
-
- CompletionCode WriteRawImageFileFromBuf(char *FileName,
- unsigned ImageWidth,
- unsigned ImageHeight,
- unsigned Transpose,
- BYTE huge *ImageBuffer);
-
-
-
-