1*324bb76bSAndroid Build Coastguard Worker /**************************************************************************** 2*324bb76bSAndroid Build Coastguard Worker 3*324bb76bSAndroid Build Coastguard Worker gif_lib_private.h - internal giflib routines and structures 4*324bb76bSAndroid Build Coastguard Worker 5*324bb76bSAndroid Build Coastguard Worker SPDX-License-Identifier: MIT 6*324bb76bSAndroid Build Coastguard Worker 7*324bb76bSAndroid Build Coastguard Worker ****************************************************************************/ 8*324bb76bSAndroid Build Coastguard Worker 9*324bb76bSAndroid Build Coastguard Worker #ifndef _GIF_LIB_PRIVATE_H 10*324bb76bSAndroid Build Coastguard Worker #define _GIF_LIB_PRIVATE_H 11*324bb76bSAndroid Build Coastguard Worker 12*324bb76bSAndroid Build Coastguard Worker #include "gif_hash.h" 13*324bb76bSAndroid Build Coastguard Worker #include "gif_lib.h" 14*324bb76bSAndroid Build Coastguard Worker 15*324bb76bSAndroid Build Coastguard Worker #ifndef SIZE_MAX 16*324bb76bSAndroid Build Coastguard Worker #define SIZE_MAX UINTPTR_MAX 17*324bb76bSAndroid Build Coastguard Worker #endif 18*324bb76bSAndroid Build Coastguard Worker 19*324bb76bSAndroid Build Coastguard Worker #define EXTENSION_INTRODUCER 0x21 20*324bb76bSAndroid Build Coastguard Worker #define DESCRIPTOR_INTRODUCER 0x2c 21*324bb76bSAndroid Build Coastguard Worker #define TERMINATOR_INTRODUCER 0x3b 22*324bb76bSAndroid Build Coastguard Worker 23*324bb76bSAndroid Build Coastguard Worker #define LZ_MAX_CODE 4095 /* Biggest code possible in 12 bits. */ 24*324bb76bSAndroid Build Coastguard Worker #define LZ_BITS 12 25*324bb76bSAndroid Build Coastguard Worker 26*324bb76bSAndroid Build Coastguard Worker #define FLUSH_OUTPUT 4096 /* Impossible code, to signal flush. */ 27*324bb76bSAndroid Build Coastguard Worker #define FIRST_CODE 4097 /* Impossible code, to signal first. */ 28*324bb76bSAndroid Build Coastguard Worker #define NO_SUCH_CODE 4098 /* Impossible code, to signal empty. */ 29*324bb76bSAndroid Build Coastguard Worker 30*324bb76bSAndroid Build Coastguard Worker #define FILE_STATE_WRITE 0x01 31*324bb76bSAndroid Build Coastguard Worker #define FILE_STATE_SCREEN 0x02 32*324bb76bSAndroid Build Coastguard Worker #define FILE_STATE_IMAGE 0x04 33*324bb76bSAndroid Build Coastguard Worker #define FILE_STATE_READ 0x08 34*324bb76bSAndroid Build Coastguard Worker 35*324bb76bSAndroid Build Coastguard Worker #define IS_READABLE(Private) (Private->FileState & FILE_STATE_READ) 36*324bb76bSAndroid Build Coastguard Worker #define IS_WRITEABLE(Private) (Private->FileState & FILE_STATE_WRITE) 37*324bb76bSAndroid Build Coastguard Worker 38*324bb76bSAndroid Build Coastguard Worker typedef struct GifFilePrivateType { 39*324bb76bSAndroid Build Coastguard Worker GifWord FileState, FileHandle, /* Where all this data goes to! */ 40*324bb76bSAndroid Build Coastguard Worker BitsPerPixel, /* Bits per pixel (Codes uses at least this + 1). */ 41*324bb76bSAndroid Build Coastguard Worker ClearCode, /* The CLEAR LZ code. */ 42*324bb76bSAndroid Build Coastguard Worker EOFCode, /* The EOF LZ code. */ 43*324bb76bSAndroid Build Coastguard Worker RunningCode, /* The next code algorithm can generate. */ 44*324bb76bSAndroid Build Coastguard Worker RunningBits, /* The number of bits required to represent 45*324bb76bSAndroid Build Coastguard Worker RunningCode. */ 46*324bb76bSAndroid Build Coastguard Worker MaxCode1, /* 1 bigger than max. possible code, in RunningBits bits. 47*324bb76bSAndroid Build Coastguard Worker */ 48*324bb76bSAndroid Build Coastguard Worker LastCode, /* The code before the current code. */ 49*324bb76bSAndroid Build Coastguard Worker CrntCode, /* Current algorithm code. */ 50*324bb76bSAndroid Build Coastguard Worker StackPtr, /* For character stack (see below). */ 51*324bb76bSAndroid Build Coastguard Worker CrntShiftState; /* Number of bits in CrntShiftDWord. */ 52*324bb76bSAndroid Build Coastguard Worker unsigned long CrntShiftDWord; /* For bytes decomposition into codes. */ 53*324bb76bSAndroid Build Coastguard Worker unsigned long PixelCount; /* Number of pixels in image. */ 54*324bb76bSAndroid Build Coastguard Worker FILE *File; /* File as stream. */ 55*324bb76bSAndroid Build Coastguard Worker InputFunc Read; /* function to read gif input (TVT) */ 56*324bb76bSAndroid Build Coastguard Worker OutputFunc Write; /* function to write gif output (MRB) */ 57*324bb76bSAndroid Build Coastguard Worker GifByteType Buf[256]; /* Compressed input is buffered here. */ 58*324bb76bSAndroid Build Coastguard Worker GifByteType Stack[LZ_MAX_CODE]; /* Decoded pixels are stacked here. */ 59*324bb76bSAndroid Build Coastguard Worker GifByteType Suffix[LZ_MAX_CODE + 1]; /* So we can trace the codes. */ 60*324bb76bSAndroid Build Coastguard Worker GifPrefixType Prefix[LZ_MAX_CODE + 1]; 61*324bb76bSAndroid Build Coastguard Worker GifHashTableType *HashTable; 62*324bb76bSAndroid Build Coastguard Worker bool gif89; 63*324bb76bSAndroid Build Coastguard Worker } GifFilePrivateType; 64*324bb76bSAndroid Build Coastguard Worker 65*324bb76bSAndroid Build Coastguard Worker #ifndef HAVE_REALLOCARRAY 66*324bb76bSAndroid Build Coastguard Worker extern void *openbsd_reallocarray(void *optr, size_t nmemb, size_t size); 67*324bb76bSAndroid Build Coastguard Worker #define reallocarray openbsd_reallocarray 68*324bb76bSAndroid Build Coastguard Worker #endif 69*324bb76bSAndroid Build Coastguard Worker 70*324bb76bSAndroid Build Coastguard Worker #endif /* _GIF_LIB_PRIVATE_H */ 71*324bb76bSAndroid Build Coastguard Worker 72*324bb76bSAndroid Build Coastguard Worker /* end */ 73