~alinuxninja/nginx-edge/trunk

« back to all changes in this revision

Viewing changes to debian/modules/ngx_pagespeed/psol/include/third_party/giflib/lib/gif_lib.h

  • Committer: Vivian
  • Date: 2015-12-04 18:20:11 UTC
  • Revision ID: git-v1:a36f2bc32e884f7473b3a47040e5411306144d7d
* Do not extract psol.tar.gz

Show diffs side-by-side

added added

removed removed

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