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