You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.4 KiB
59 lines
2.4 KiB
/**************************************************************************** |
|
|
|
gif_lib_private.h - internal giflib routines and structures |
|
|
|
****************************************************************************/ |
|
|
|
#ifndef _GIF_LIB_PRIVATE_H |
|
#define _GIF_LIB_PRIVATE_H |
|
|
|
#include "gif_lib.h" |
|
#include "gif_hash.h" |
|
|
|
#define EXTENSION_INTRODUCER 0x21 |
|
#define DESCRIPTOR_INTRODUCER 0x2c |
|
#define TERMINATOR_INTRODUCER 0x3b |
|
|
|
#define LZ_MAX_CODE 4095 /* Biggest code possible in 12 bits. */ |
|
#define LZ_BITS 12 |
|
|
|
#define FLUSH_OUTPUT 4096 /* Impossible code, to signal flush. */ |
|
#define FIRST_CODE 4097 /* Impossible code, to signal first. */ |
|
#define NO_SUCH_CODE 4098 /* Impossible code, to signal empty. */ |
|
|
|
#define FILE_STATE_WRITE 0x01 |
|
#define FILE_STATE_SCREEN 0x02 |
|
#define FILE_STATE_IMAGE 0x04 |
|
#define FILE_STATE_READ 0x08 |
|
|
|
#define IS_READABLE(Private) (Private->FileState & FILE_STATE_READ) |
|
#define IS_WRITEABLE(Private) (Private->FileState & FILE_STATE_WRITE) |
|
|
|
typedef struct GifFilePrivateType { |
|
GifWord FileState, FileHandle, /* Where all this data goes to! */ |
|
BitsPerPixel, /* Bits per pixel (Codes uses at least this + 1). */ |
|
ClearCode, /* The CLEAR LZ code. */ |
|
EOFCode, /* The EOF LZ code. */ |
|
RunningCode, /* The next code algorithm can generate. */ |
|
RunningBits, /* The number of bits required to represent RunningCode. */ |
|
MaxCode1, /* 1 bigger than max. possible code, in RunningBits bits. */ |
|
LastCode, /* The code before the current code. */ |
|
CrntCode, /* Current algorithm code. */ |
|
StackPtr, /* For character stack (see below). */ |
|
CrntShiftState; /* Number of bits in CrntShiftDWord. */ |
|
unsigned long CrntShiftDWord; /* For bytes decomposition into codes. */ |
|
unsigned long PixelCount; /* Number of pixels in image. */ |
|
FILE *File; /* File as stream. */ |
|
InputFunc Read; /* function to read gif input (TVT) */ |
|
OutputFunc Write; /* function to write gif output (MRB) */ |
|
GifByteType Buf[256]; /* Compressed input is buffered here. */ |
|
GifByteType Stack[LZ_MAX_CODE]; /* Decoded pixels are stacked here. */ |
|
GifByteType Suffix[LZ_MAX_CODE + 1]; /* So we can trace the codes. */ |
|
GifPrefixType Prefix[LZ_MAX_CODE + 1]; |
|
GifHashTableType *HashTable; |
|
bool gif89; |
|
} GifFilePrivateType; |
|
|
|
#endif /* _GIF_LIB_PRIVATE_H */ |
|
|
|
/* end */
|
|
|