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