19aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik/**************************************************************************** 29aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik 39aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craikgif_lib_private.h - internal giflib routines and structures 49aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik 59aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik****************************************************************************/ 69aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik 7c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifndef _GIF_LIB_PRIVATE_H 8c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define _GIF_LIB_PRIVATE_H 9c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project 10c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#include "gif_lib.h" 11c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#include "gif_hash.h" 12c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project 139aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik#define EXTENSION_INTRODUCER 0x21 149aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik#define DESCRIPTOR_INTRODUCER 0x2c 159aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik#define TERMINATOR_INTRODUCER 0x3b 16c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project 17c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define LZ_MAX_CODE 4095 /* Biggest code possible in 12 bits. */ 18c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define LZ_BITS 12 19c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project 20c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define FLUSH_OUTPUT 4096 /* Impossible code, to signal flush. */ 21c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define FIRST_CODE 4097 /* Impossible code, to signal first. */ 22c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define NO_SUCH_CODE 4098 /* Impossible code, to signal empty. */ 23c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project 24c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define FILE_STATE_WRITE 0x01 25c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define FILE_STATE_SCREEN 0x02 26c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define FILE_STATE_IMAGE 0x04 27c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define FILE_STATE_READ 0x08 28c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project 29c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define IS_READABLE(Private) (Private->FileState & FILE_STATE_READ) 30c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define IS_WRITEABLE(Private) (Private->FileState & FILE_STATE_WRITE) 31c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project 32c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef struct GifFilePrivateType { 33c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project GifWord FileState, FileHandle, /* Where all this data goes to! */ 34c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project BitsPerPixel, /* Bits per pixel (Codes uses at least this + 1). */ 35c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project ClearCode, /* The CLEAR LZ code. */ 36c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project EOFCode, /* The EOF LZ code. */ 37c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project RunningCode, /* The next code algorithm can generate. */ 38c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project RunningBits, /* The number of bits required to represent RunningCode. */ 39c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project MaxCode1, /* 1 bigger than max. possible code, in RunningBits bits. */ 40c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project LastCode, /* The code before the current code. */ 41c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project CrntCode, /* Current algorithm code. */ 42c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project StackPtr, /* For character stack (see below). */ 43c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project CrntShiftState; /* Number of bits in CrntShiftDWord. */ 44c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project unsigned long CrntShiftDWord; /* For bytes decomposition into codes. */ 45c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project unsigned long PixelCount; /* Number of pixels in image. */ 46c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project FILE *File; /* File as stream. */ 47c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project InputFunc Read; /* function to read gif input (TVT) */ 48c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project OutputFunc Write; /* function to write gif output (MRB) */ 49c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project GifByteType Buf[256]; /* Compressed input is buffered here. */ 50c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project GifByteType Stack[LZ_MAX_CODE]; /* Decoded pixels are stacked here. */ 51c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project GifByteType Suffix[LZ_MAX_CODE + 1]; /* So we can trace the codes. */ 52c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project GifPrefixType Prefix[LZ_MAX_CODE + 1]; 53c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project GifHashTableType *HashTable; 549aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik bool gif89; 55c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project} GifFilePrivateType; 56c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project 57c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* _GIF_LIB_PRIVATE_H */ 589aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik 599aef3ea079a57c98a9207f8c3b95a5dc08ee74b5Chris Craik/* end */ 60