/* Structure Definitions */ enum FmodeDef { INPUT, OUTPUT }; typedef enum FmodeDef Fmode; struct ByteStreamDef { Fmode mode; short stat; FILE *file; }; typedef struct ByteStreamDef ByteStream; extern void cByteStream( ByteStream *, char *FileName, Fmode FileMode ); extern void dByteStream(ByteStream *); extern short ByteStream_read(ByteStream *); extern short ByteStream_write(ByteStream *, short c); extern short ByteStream_status(ByteStream *); #define MEMORY 1 #define DISK 0 #ifdef __TURBOC__ #define CHARH unsigned char huge #else #define CHARH unsigned char #endif struct BitStreamDef { ByteStream bytestream; short BitBuffer; /* Bit I/O buffer */ short BitBuffMask; /* Bit I/O buffer mask */ CHARH *outstring; char mode; unsigned long bytesout; unsigned short bitmask[17]; }; typedef struct BitStreamDef BitStream; extern void cBitStream( BitStream *, char *fn, Fmode fm ); extern void dBitStream(BitStream *); extern short BitStream_write(BitStream *, short bits, short width); extern short BitStream_read(BitStream *, short bits); /* Global Tables */ extern float qtable[64]; extern int zzseq[64]; extern short dcbits[16], acbits[16]; extern char dchuffval[12], achuffval[162]; /* Function Declarations */ extern void inithuffcode(); extern void encode(short *, BitStream *); extern void decode(short *, BitStream *); extern void decomp(BitStream *bs,CHARH *Image,long rows,long cols);