1c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
2c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * In order to make life a little bit easier when using the GIF file format,
3c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * this library was written, and which does all the dirty work...
4c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *
5c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *                                        Written by Gershon Elber,  Jun. 1989
6c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *                                        Hacks by Eric S. Raymond,  Sep. 1992
7c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project ******************************************************************************
8c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * History:
9c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * 14 Jun 89 - Version 1.0 by Gershon Elber.
10c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *  3 Sep 90 - Version 1.1 by Gershon Elber (Support for Gif89, Unique names)
11c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * 15 Sep 90 - Version 2.0 by Eric S. Raymond (Changes to suoport GIF slurp)
12c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * 26 Jun 96 - Version 3.0 by Eric S. Raymond (Full GIF89 support)
13c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * 17 Dec 98 - Version 4.0 by Toshio Kuratomi (Fix extension writing code)
14c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *****************************************************************************/
15c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
16c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifndef _GIF_LIB_H_
17c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define _GIF_LIB_H_ 1
18c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
19c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifdef __cplusplus
20c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern "C" {
21c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* __cplusplus */
22c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
23c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_LIB_VERSION " Version 4.1, "
24c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
25c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_ERROR   0
26c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_OK      1
27c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
28c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifndef TRUE
29c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define TRUE        1
30c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* TRUE */
31c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifndef FALSE
32c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define FALSE       0
33c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* FALSE */
34c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
35c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifndef NULL
36c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define NULL        0
37c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* NULL */
38c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
39c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_STAMP "GIFVER"          /* First chars in file - GIF stamp.  */
40c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_STAMP_LEN sizeof(GIF_STAMP) - 1
41c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_VERSION_POS 3           /* Version first character in stamp. */
42c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF87_STAMP "GIF87a"        /* First chars in file - GIF stamp.  */
43c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF89_STAMP "GIF89a"        /* First chars in file - GIF stamp.  */
44c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
45c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_FILE_BUFFER_SIZE 16384  /* Files uses bigger buffers than usual. */
46c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
47c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef int GifBooleanType;
48c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef unsigned char GifPixelType;
49c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef unsigned char *GifRowType;
50c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef unsigned char GifByteType;
51c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifdef _GBA_OPTMEM
52c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    typedef unsigned short GifPrefixType;
53c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    typedef short GifWord;
54c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#else
55c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    typedef unsigned int GifPrefixType;
56c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    typedef int GifWord;
57c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif
58c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
59c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_MESSAGE(Msg) fprintf(stderr, "\n%s: %s\n", PROGRAM_NAME, Msg)
60c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_EXIT(Msg)    { GIF_MESSAGE(Msg); exit(-3); }
61c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
62c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifdef SYSV
63c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define VoidPtr char *
64c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#else
65c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define VoidPtr void *
66c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* SYSV */
67c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
68c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef struct GifColorType {
69c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    GifByteType Red, Green, Blue;
70c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project} GifColorType;
71c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
72c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef struct ColorMapObject {
73c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    int ColorCount;
74c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    int BitsPerPixel;
75c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    GifColorType *Colors;    /* on malloc(3) heap */
76c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project} ColorMapObject;
77c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
78c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef struct GifImageDesc {
79c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    GifWord Left, Top, Width, Height,   /* Current image dimensions. */
80c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project      Interlace;                    /* Sequential/Interlaced lines. */
81c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    ColorMapObject *ColorMap;       /* The local color map */
82c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project} GifImageDesc;
83c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
84c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef struct GifFileType {
85c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    GifWord SWidth, SHeight,        /* Screen dimensions. */
86c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project      SColorResolution,         /* How many colors can we generate? */
87c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project      SBackGroundColor;         /* I hope you understand this one... */
88c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    ColorMapObject *SColorMap;  /* NULL if not exists. */
89c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    int ImageCount;             /* Number of current image */
90c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    GifImageDesc Image;         /* Block describing current image */
91c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    struct SavedImage *SavedImages; /* Use this to accumulate file state */
92c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    VoidPtr UserData;           /* hook to attach user data (TVT) */
93c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    VoidPtr Private;            /* Don't mess with this! */
94c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project} GifFileType;
95c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
96c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef enum {
97c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    UNDEFINED_RECORD_TYPE,
98c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    SCREEN_DESC_RECORD_TYPE,
99c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    IMAGE_DESC_RECORD_TYPE, /* Begin with ',' */
100c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    EXTENSION_RECORD_TYPE,  /* Begin with '!' */
101c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    TERMINATE_RECORD_TYPE   /* Begin with ';' */
102c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project} GifRecordType;
103c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
104c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/* DumpScreen2Gif routine constants identify type of window/screen to dump.
105c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * Note all values below 1000 are reserved for the IBMPC different display
106c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * devices (it has many!) and are compatible with the numbering TC2.0
107c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * (Turbo C 2.0 compiler for IBM PC) gives to these devices.
108c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project */
109c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef enum {
110c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    GIF_DUMP_SGI_WINDOW = 1000,
111c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    GIF_DUMP_X_WINDOW = 1001
112c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project} GifScreenDumpType;
113c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
114c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/* func type to read gif data from arbitrary sources (TVT) */
115c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef int (*InputFunc) (GifFileType *, GifByteType *, int);
116c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
117c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/* func type to write gif data ro arbitrary targets.
118c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * Returns count of bytes written. (MRB)
119c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project */
120c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef int (*OutputFunc) (GifFileType *, const GifByteType *, int);
121c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
122c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
123c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *  GIF89 extension function codes
124c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project******************************************************************************/
125c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
126c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define COMMENT_EXT_FUNC_CODE     0xfe    /* comment */
127c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GRAPHICS_EXT_FUNC_CODE    0xf9    /* graphics control */
128c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define PLAINTEXT_EXT_FUNC_CODE   0x01    /* plaintext */
129c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define APPLICATION_EXT_FUNC_CODE 0xff    /* application block */
130c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
131c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
132c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * O.K., here are the routines one can access in order to encode GIF file:
133c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * (GIF_LIB file EGIF_LIB.C).
134c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project******************************************************************************/
135c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
136c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source ProjectGifFileType *EGifOpenFileName(const char *GifFileName,
137c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                              int GifTestExistance);
138c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source ProjectGifFileType *EGifOpenFileHandle(int GifFileHandle);
139c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source ProjectGifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc);
140c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
141c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifSpew(GifFileType * GifFile);
142c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectvoid EGifSetGifVersion(const char *Version);
143c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutScreenDesc(GifFileType * GifFile,
144c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                      int GifWidth, int GifHeight, int GifColorRes,
145c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                      int GifBackGround,
146c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                      const ColorMapObject * GifColorMap);
147c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutImageDesc(GifFileType * GifFile, int GifLeft, int GifTop,
148c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                     int Width, int GifHeight, int GifInterlace,
149c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                     const ColorMapObject * GifColorMap);
150c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutLine(GifFileType * GifFile, GifPixelType * GifLine,
151c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                int GifLineLen);
152c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutPixel(GifFileType * GifFile, GifPixelType GifPixel);
153c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutComment(GifFileType * GifFile, const char *GifComment);
154c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutExtensionFirst(GifFileType * GifFile, int GifExtCode,
155c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                          int GifExtLen, const VoidPtr GifExtension);
156c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutExtensionNext(GifFileType * GifFile, int GifExtCode,
157c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                         int GifExtLen, const VoidPtr GifExtension);
158c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutExtensionLast(GifFileType * GifFile, int GifExtCode,
159c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                         int GifExtLen, const VoidPtr GifExtension);
160c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutExtension(GifFileType * GifFile, int GifExtCode, int GifExtLen,
161c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                     const VoidPtr GifExtension);
162c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutCode(GifFileType * GifFile, int GifCodeSize,
163c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                const GifByteType * GifCodeBlock);
164c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifPutCodeNext(GifFileType * GifFile,
165c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                    const GifByteType * GifCodeBlock);
166c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint EGifCloseFile(GifFileType * GifFile);
167c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
168c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_OPEN_FAILED    1    /* And EGif possible errors. */
169c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_WRITE_FAILED   2
170c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_HAS_SCRN_DSCR  3
171c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_HAS_IMAG_DSCR  4
172c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_NO_COLOR_MAP   5
173c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_DATA_TOO_BIG   6
174c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_NOT_ENOUGH_MEM 7
175c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_DISK_IS_FULL   8
176c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_CLOSE_FAILED   9
177c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define E_GIF_ERR_NOT_WRITEABLE  10
178c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
179c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
180c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * O.K., here are the routines one can access in order to decode GIF file:
181c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * (GIF_LIB file DGIF_LIB.C).
182c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *****************************************************************************/
183c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifndef _GBA_NO_FILEIO
184c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source ProjectGifFileType *DGifOpenFileName(const char *GifFileName);
185c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source ProjectGifFileType *DGifOpenFileHandle(int GifFileHandle);
186c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifSlurp(GifFileType * GifFile);
187c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* _GBA_NO_FILEIO */
188c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source ProjectGifFileType *DGifOpen(void *userPtr, InputFunc readFunc);    /* new one
189c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                                                             * (TVT) */
190c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetScreenDesc(GifFileType * GifFile);
191c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetRecordType(GifFileType * GifFile, GifRecordType * GifType);
192c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetImageDesc(GifFileType * GifFile);
193c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetLine(GifFileType * GifFile, GifPixelType * GifLine, int GifLineLen);
194c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetPixel(GifFileType * GifFile, GifPixelType GifPixel);
195c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetComment(GifFileType * GifFile, char *GifComment);
196c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetExtension(GifFileType * GifFile, int *GifExtCode,
197c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                     GifByteType ** GifExtension);
198c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetExtensionNext(GifFileType * GifFile, GifByteType ** GifExtension);
199c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetCode(GifFileType * GifFile, int *GifCodeSize,
200c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                GifByteType ** GifCodeBlock);
201c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetCodeNext(GifFileType * GifFile, GifByteType ** GifCodeBlock);
202c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifGetLZCodes(GifFileType * GifFile, int *GifCode);
203c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint DGifCloseFile(GifFileType * GifFile);
204c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
205c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_OPEN_FAILED    101    /* And DGif possible errors. */
206c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_READ_FAILED    102
207c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_NOT_GIF_FILE   103
208c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_NO_SCRN_DSCR   104
209c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_NO_IMAG_DSCR   105
210c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_NO_COLOR_MAP   106
211c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_WRONG_RECORD   107
212c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_DATA_TOO_BIG   108
213c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_NOT_ENOUGH_MEM 109
214c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_CLOSE_FAILED   110
215c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_NOT_READABLE   111
216c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_IMAGE_DEFECT   112
217c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define D_GIF_ERR_EOF_TOO_SOON   113
218c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
219c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
220c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * O.K., here are the routines from GIF_LIB file QUANTIZE.C.
221c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project******************************************************************************/
222c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectint QuantizeBuffer(unsigned int Width, unsigned int Height,
223c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                   int *ColorMapSize, GifByteType * RedInput,
224c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                   GifByteType * GreenInput, GifByteType * BlueInput,
225c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                   GifByteType * OutputBuffer,
226c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                   GifColorType * OutputColorMap);
227c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
228c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
229c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * O.K., here are the routines from GIF_LIB file QPRINTF.C.
230c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project******************************************************************************/
231c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern int GifQuietPrint;
232c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
233c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifdef HAVE_STDARG_H
234c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    extern void GifQprintf(char *Format, ...);
235c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#elif defined (HAVE_VARARGS_H)
236c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    extern void GifQprintf();
237c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* HAVE_STDARG_H */
238c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
239c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
240c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * O.K., here are the routines from GIF_LIB file GIF_ERR.C.
241c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project******************************************************************************/
242c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifndef _GBA_NO_FILEIO
243c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern void PrintGifError(void);
244c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* _GBA_NO_FILEIO */
245c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern int GifLastError(void);
246c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
247c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
248c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * O.K., here are the routines from GIF_LIB file DEV2GIF.C.
249c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project******************************************************************************/
250c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern int DumpScreen2Gif(const char *FileName,
251c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                          int ReqGraphDriver,
252c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                          long ReqGraphMode1,
253c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                          long ReqGraphMode2,
254c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                          long ReqGraphMode3);
255c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
256c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/*****************************************************************************
257c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *
258c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * Everything below this point is new after version 1.2, supporting `slurp
259c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * mode' for doing I/O in two big belts with all the image-bashing in core.
260c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *
261c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *****************************************************************************/
262c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
263c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
264c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * Color Map handling from ALLOCGIF.C
265c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *****************************************************************************/
266c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
267c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern ColorMapObject *MakeMapObject(int ColorCount,
268c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                                     const GifColorType * ColorMap);
269c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern void FreeMapObject(ColorMapObject * Object);
270c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern ColorMapObject *UnionColorMap(const ColorMapObject * ColorIn1,
271c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                                     const ColorMapObject * ColorIn2,
272c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                                     GifPixelType ColorTransIn2[]);
273c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern int BitSize(int n);
274c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
275c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
276c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * Support for the in-core structures allocation (slurp mode).
277c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *****************************************************************************/
278c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
279c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/* This is the in-core version of an extension record */
280c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef struct {
281c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    int ByteCount;
282c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    char *Bytes;    /* on malloc(3) heap */
283c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    int Function;   /* Holds the type of the Extension block. */
284c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project} ExtensionBlock;
285c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
286c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/* This holds an image header, its unpacked raster bits, and extensions */
287c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projecttypedef struct SavedImage {
288c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    GifImageDesc ImageDesc;
289c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    unsigned char *RasterBits;  /* on malloc(3) heap */
290c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    int Function;   /* DEPRECATED: Use ExtensionBlocks[x].Function instead */
291c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    int ExtensionBlockCount;
292c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    ExtensionBlock *ExtensionBlocks;    /* on malloc(3) heap */
293c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project} SavedImage;
294c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
295c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern void ApplyTranslation(SavedImage * Image, GifPixelType Translation[]);
296c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern void MakeExtension(SavedImage * New, int Function);
297c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern int AddExtensionBlock(SavedImage * New, int Len,
298c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                             unsigned char ExtData[]);
299c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern void FreeExtension(SavedImage * Image);
300c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern SavedImage *MakeSavedImage(GifFileType * GifFile,
301c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                                  const SavedImage * CopyFrom);
302c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern void FreeSavedImages(GifFileType * GifFile);
303c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
304c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project/******************************************************************************
305c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project * The library's internal utility font
306c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project *****************************************************************************/
307c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
308c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_FONT_WIDTH  8
309c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#define GIF_FONT_HEIGHT 8
310c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern unsigned char AsciiTable[][GIF_FONT_WIDTH];
311c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
312c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifdef _WIN32
313c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    extern void DrawGifText(SavedImage * Image,
314c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#else
315c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project    extern void DrawGifText(SavedImage * Image,
316c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif
317c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                     const int x, const int y,
318c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                     const char *legend, const int color);
319c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
320c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern void DrawBox(SavedImage * Image,
321c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                    const int x, const int y,
322c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                    const int w, const int d, const int color);
323c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
324c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectvoid DrawRectangle(SavedImage * Image,
325c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                   const int x, const int y,
326c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                   const int w, const int d, const int color);
327c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
328c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Projectextern void DrawBoxedText(SavedImage * Image,
329c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                          const int x, const int y,
330c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                          const char *legend,
331c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project                          const int border, const int bg, const int fg);
332c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project
333c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#ifdef __cplusplus
334c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project}
335c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* __cplusplus */
336c2eacaec90baee57fdbbdbad935d161638894ee7The Android Open Source Project#endif /* _GIF_LIB_H */
337