jdk/src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h
author azvegint
Tue, 16 Aug 2016 22:10:12 +0300
changeset 40701 cfe188d1a054
parent 30496 aac453851104
permissions -rw-r--r--
8155691: Update GIFlib library to the latest up-to-date Reviewed-by: serb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
     2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * under the terms of the GNU General Public License version 2 only, as
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     6
 * published by the Free Software Foundation.  Oracle designates this
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     7
 * particular file as subject to the "Classpath" exception as provided
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     8
 * by Oracle in the LICENSE file that accompanied this code.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     9
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    20
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    21
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    22
 * questions.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    23
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
/******************************************************************************
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    27
gif_lib.h - service library for decoding and encoding GIF images
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    28
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    29
*****************************************************************************/
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
#ifndef _GIF_LIB_H_
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
#define _GIF_LIB_H_ 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
#ifdef __cplusplus
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
extern "C" {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
#endif /* __cplusplus */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    38
#define GIFLIB_MAJOR 5
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    39
#define GIFLIB_MINOR 1
40701
cfe188d1a054 8155691: Update GIFlib library to the latest up-to-date
azvegint
parents: 30496
diff changeset
    40
#define GIFLIB_RELEASE 4
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
#define GIF_ERROR   0
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
#define GIF_OK      1
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    45
#include <stddef.h>
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    47
#ifdef bool
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    48
#undef bool
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    49
#endif
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    50
typedef int bool;
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    51
#define false 0
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    52
#define true 1
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
#define GIF_STAMP "GIFVER"          /* First chars in file - GIF stamp.  */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
#define GIF_STAMP_LEN sizeof(GIF_STAMP) - 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
#define GIF_VERSION_POS 3           /* Version first character in stamp. */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
#define GIF87_STAMP "GIF87a"        /* First chars in file - GIF stamp.  */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
#define GIF89_STAMP "GIF89a"        /* First chars in file - GIF stamp.  */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
typedef unsigned char GifPixelType;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
typedef unsigned char *GifRowType;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
typedef unsigned char GifByteType;
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    63
typedef unsigned int GifPrefixType;
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    64
typedef int GifWord;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
typedef struct GifColorType {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
    GifByteType Red, Green, Blue;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
} GifColorType;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
typedef struct ColorMapObject {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
    int ColorCount;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
    int BitsPerPixel;
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    73
    bool SortFlag;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
    GifColorType *Colors;    /* on malloc(3) heap */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
} ColorMapObject;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
typedef struct GifImageDesc {
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    78
    GifWord Left, Top, Width, Height;   /* Current image dimensions. */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    79
    bool Interlace;                     /* Sequential/Interlaced lines. */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    80
    ColorMapObject *ColorMap;           /* The local color map */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
} GifImageDesc;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    83
typedef struct ExtensionBlock {
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    84
    int ByteCount;
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    85
    GifByteType *Bytes; /* on malloc(3) heap */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    86
    int Function;       /* The block function code */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    87
#define CONTINUE_EXT_FUNC_CODE    0x00    /* continuation subblock */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    88
#define COMMENT_EXT_FUNC_CODE     0xfe    /* comment */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    89
#define GRAPHICS_EXT_FUNC_CODE    0xf9    /* graphics control (GIF89) */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    90
#define PLAINTEXT_EXT_FUNC_CODE   0x01    /* plaintext */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    91
#define APPLICATION_EXT_FUNC_CODE 0xff    /* application block */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    92
} ExtensionBlock;
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    93
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    94
typedef struct SavedImage {
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    95
    GifImageDesc ImageDesc;
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    96
    GifByteType *RasterBits;         /* on malloc(3) heap */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    97
    int ExtensionBlockCount;         /* Count of extensions before image */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    98
    ExtensionBlock *ExtensionBlocks; /* Extensions before image */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
    99
} SavedImage;
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   100
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
typedef struct GifFileType {
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   102
    GifWord SWidth, SHeight;         /* Size of virtual canvas */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   103
    GifWord SColorResolution;        /* How many colors can we generate? */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   104
    GifWord SBackGroundColor;        /* Background color for virtual canvas */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   105
    GifByteType AspectByte;          /* Used to compute pixel aspect ratio */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   106
    ColorMapObject *SColorMap;       /* Global colormap, NULL if nonexistent. */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   107
    int ImageCount;                  /* Number of current image (both APIs) */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   108
    GifImageDesc Image;              /* Current image (low-level API) */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   109
    SavedImage *SavedImages;         /* Image sequence (high-level API) */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   110
    int ExtensionBlockCount;         /* Count extensions past last image */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   111
    ExtensionBlock *ExtensionBlocks; /* Extensions past last image */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   112
    int Error;                       /* Last error condition reported */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   113
    void *UserData;                  /* hook to attach user data (TVT) */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   114
    void *Private;                   /* Don't mess with this! */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
} GifFileType;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   117
#define GIF_ASPECT_RATIO(n)    ((n)+15.0/64.0)
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   118
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
typedef enum {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
    UNDEFINED_RECORD_TYPE,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
    SCREEN_DESC_RECORD_TYPE,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
    IMAGE_DESC_RECORD_TYPE, /* Begin with ',' */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
    EXTENSION_RECORD_TYPE,  /* Begin with '!' */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
    TERMINATE_RECORD_TYPE   /* Begin with ';' */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
} GifRecordType;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
/* func type to read gif data from arbitrary sources (TVT) */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
typedef int (*InputFunc) (GifFileType *, GifByteType *, int);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   130
/* func type to write gif data to arbitrary targets.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
 * Returns count of bytes written. (MRB)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
typedef int (*OutputFunc) (GifFileType *, const GifByteType *, int);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
/******************************************************************************
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   136
 GIF89 structures
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
******************************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   139
typedef struct GraphicsControlBlock {
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   140
    int DisposalMode;
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   141
#define DISPOSAL_UNSPECIFIED      0       /* No disposal specified. */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   142
#define DISPOSE_DO_NOT            1       /* Leave image in place */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   143
#define DISPOSE_BACKGROUND        2       /* Set area too background color */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   144
#define DISPOSE_PREVIOUS          3       /* Restore to previous content */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   145
    bool UserInputFlag;      /* User confirmation required before disposal */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   146
    int DelayTime;           /* pre-display delay in 0.01sec units */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   147
    int TransparentColor;    /* Palette index for transparency, -1 if none */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   148
#define NO_TRANSPARENT_COLOR    -1
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   149
} GraphicsControlBlock;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
/******************************************************************************
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   152
 GIF encoding routines
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   153
******************************************************************************/
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   154
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   155
/* Main entry points */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   156
GifFileType *EGifOpenFileName(const char *GifFileName,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   157
                              const bool GifTestExistence, int *Error);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   158
GifFileType *EGifOpenFileHandle(const int GifFileHandle, int *Error);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   159
GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc, int *Error);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   160
int EGifSpew(GifFileType * GifFile);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   161
const char *EGifGetGifVersion(GifFileType *GifFile); /* new in 5.x */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   162
int EGifCloseFile(GifFileType *GifFile, int *ErrorCode);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   163
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   164
#define E_GIF_SUCCEEDED          0
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   165
#define E_GIF_ERR_OPEN_FAILED    1    /* And EGif possible errors. */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   166
#define E_GIF_ERR_WRITE_FAILED   2
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   167
#define E_GIF_ERR_HAS_SCRN_DSCR  3
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   168
#define E_GIF_ERR_HAS_IMAG_DSCR  4
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   169
#define E_GIF_ERR_NO_COLOR_MAP   5
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   170
#define E_GIF_ERR_DATA_TOO_BIG   6
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   171
#define E_GIF_ERR_NOT_ENOUGH_MEM 7
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   172
#define E_GIF_ERR_DISK_IS_FULL   8
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   173
#define E_GIF_ERR_CLOSE_FAILED   9
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   174
#define E_GIF_ERR_NOT_WRITEABLE  10
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   176
/* These are legacy.  You probably do not want to call them directly */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   177
int EGifPutScreenDesc(GifFileType *GifFile,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   178
                      const int GifWidth, const int GifHeight,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   179
                      const int GifColorRes,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   180
                      const int GifBackGround,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   181
                      const ColorMapObject *GifColorMap);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   182
int EGifPutImageDesc(GifFileType *GifFile,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   183
                     const int GifLeft, const int GifTop,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   184
                     const int GifWidth, const int GifHeight,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   185
                     const bool GifInterlace,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   186
                     const ColorMapObject *GifColorMap);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   187
void EGifSetGifVersion(GifFileType *GifFile, const bool gif89);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   188
int EGifPutLine(GifFileType *GifFile, GifPixelType *GifLine,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   189
                int GifLineLen);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   190
int EGifPutPixel(GifFileType *GifFile, const GifPixelType GifPixel);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   191
int EGifPutComment(GifFileType *GifFile, const char *GifComment);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   192
int EGifPutExtensionLeader(GifFileType *GifFile, const int GifExtCode);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   193
int EGifPutExtensionBlock(GifFileType *GifFile,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   194
                         const int GifExtLen, const void *GifExtension);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   195
int EGifPutExtensionTrailer(GifFileType *GifFile);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   196
int EGifPutExtension(GifFileType *GifFile, const int GifExtCode,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   197
                     const int GifExtLen,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   198
                     const void *GifExtension);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   199
int EGifPutCode(GifFileType *GifFile, int GifCodeSize,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   200
                const GifByteType *GifCodeBlock);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   201
int EGifPutCodeNext(GifFileType *GifFile,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   202
                    const GifByteType *GifCodeBlock);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   203
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   204
/******************************************************************************
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   205
 GIF decoding routines
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   206
******************************************************************************/
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   207
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   208
/* Main entry points */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   209
GifFileType *DGifOpenFileName(const char *GifFileName, int *Error);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   210
GifFileType *DGifOpenFileHandle(int GifFileHandle, int *Error);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   211
int DGifSlurp(GifFileType * GifFile);
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   212
GifFileType *DGifOpen(void *userPtr, InputFunc readFunc, int *Error);    /* new one (TVT) */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   213
    int DGifCloseFile(GifFileType * GifFile, int *ErrorCode);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   214
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   215
#define D_GIF_SUCCEEDED          0
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
#define D_GIF_ERR_OPEN_FAILED    101    /* And DGif possible errors. */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
#define D_GIF_ERR_READ_FAILED    102
90ce3da70b43 Initial load
duke
parents:
diff changeset
   218
#define D_GIF_ERR_NOT_GIF_FILE   103
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
#define D_GIF_ERR_NO_SCRN_DSCR   104
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
#define D_GIF_ERR_NO_IMAG_DSCR   105
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
#define D_GIF_ERR_NO_COLOR_MAP   106
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
#define D_GIF_ERR_WRONG_RECORD   107
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
#define D_GIF_ERR_DATA_TOO_BIG   108
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
#define D_GIF_ERR_NOT_ENOUGH_MEM 109
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
#define D_GIF_ERR_CLOSE_FAILED   110
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
#define D_GIF_ERR_NOT_READABLE   111
90ce3da70b43 Initial load
duke
parents:
diff changeset
   227
#define D_GIF_ERR_IMAGE_DEFECT   112
90ce3da70b43 Initial load
duke
parents:
diff changeset
   228
#define D_GIF_ERR_EOF_TOO_SOON   113
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   230
/* These are legacy.  You probably do not want to call them directly */
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   231
int DGifGetScreenDesc(GifFileType *GifFile);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   232
int DGifGetRecordType(GifFileType *GifFile, GifRecordType *GifType);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   233
int DGifGetImageDesc(GifFileType *GifFile);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   234
int DGifGetLine(GifFileType *GifFile, GifPixelType *GifLine, int GifLineLen);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   235
int DGifGetPixel(GifFileType *GifFile, GifPixelType GifPixel);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   236
int DGifGetComment(GifFileType *GifFile, char *GifComment);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   237
int DGifGetExtension(GifFileType *GifFile, int *GifExtCode,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   238
                     GifByteType **GifExtension);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   239
int DGifGetExtensionNext(GifFileType *GifFile, GifByteType **GifExtension);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   240
int DGifGetCode(GifFileType *GifFile, int *GifCodeSize,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   241
                GifByteType **GifCodeBlock);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   242
int DGifGetCodeNext(GifFileType *GifFile, GifByteType **GifCodeBlock);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   243
int DGifGetLZCodes(GifFileType *GifFile, int *GifCode);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
/******************************************************************************
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   247
 Color table quantization (deprecated)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
******************************************************************************/
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   249
int GifQuantizeBuffer(unsigned int Width, unsigned int Height,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   250
                   int *ColorMapSize, GifByteType * RedInput,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   251
                   GifByteType * GreenInput, GifByteType * BlueInput,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   252
                   GifByteType * OutputBuffer,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   253
                   GifColorType * OutputColorMap);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   254
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   255
/******************************************************************************
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   256
 Error handling and reporting.
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   257
******************************************************************************/
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   258
extern const char *GifErrorString(int ErrorCode);     /* new in 2012 - ESR */
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   259
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
/*****************************************************************************
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   261
 Everything below this point is new after version 1.2, supporting `slurp
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   262
 mode' for doing I/O in two big belts with all the image-bashing in core.
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   263
******************************************************************************/
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   264
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   265
/******************************************************************************
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   266
 Color map handling from gif_alloc.c
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   267
******************************************************************************/
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   268
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   269
extern ColorMapObject *GifMakeMapObject(int ColorCount,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   270
                                     const GifColorType *ColorMap);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   271
extern void GifFreeMapObject(ColorMapObject *Object);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   272
extern ColorMapObject *GifUnionColorMap(const ColorMapObject *ColorIn1,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   273
                                     const ColorMapObject *ColorIn2,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   274
                                     GifPixelType ColorTransIn2[]);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   275
extern int GifBitSize(int n);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
40701
cfe188d1a054 8155691: Update GIFlib library to the latest up-to-date
azvegint
parents: 30496
diff changeset
   277
extern void * reallocarray(void *optr, size_t nmemb, size_t size);
cfe188d1a054 8155691: Update GIFlib library to the latest up-to-date
azvegint
parents: 30496
diff changeset
   278
cfe188d1a054 8155691: Update GIFlib library to the latest up-to-date
azvegint
parents: 30496
diff changeset
   279
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
/******************************************************************************
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   281
 Support for the in-core structures allocation (slurp mode).
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   282
******************************************************************************/
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   283
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   284
extern void GifApplyTranslation(SavedImage *Image, GifPixelType Translation[]);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   285
extern int GifAddExtensionBlock(int *ExtensionBlock_Count,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   286
                                ExtensionBlock **ExtensionBlocks,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   287
                                int Function,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   288
                                unsigned int Len, unsigned char ExtData[]);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   289
extern void GifFreeExtensions(int *ExtensionBlock_Count,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   290
                              ExtensionBlock **ExtensionBlocks);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   291
extern SavedImage *GifMakeSavedImage(GifFileType *GifFile,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   292
                                  const SavedImage *CopyFrom);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   293
extern void GifFreeSavedImages(GifFileType *GifFile);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   294
90ce3da70b43 Initial load
duke
parents:
diff changeset
   295
/******************************************************************************
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   296
 5.x functions for GIF89 graphics control blocks
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   297
******************************************************************************/
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   298
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   299
int DGifExtensionToGCB(const size_t GifExtensionLength,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   300
                       const GifByteType *GifExtension,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   301
                       GraphicsControlBlock *GCB);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   302
size_t EGifGCBToExtension(const GraphicsControlBlock *GCB,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   303
                          GifByteType *GifExtension);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   304
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   305
int DGifSavedExtensionToGCB(GifFileType *GifFile,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   306
                            int ImageIndex,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   307
                            GraphicsControlBlock *GCB);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   308
int EGifGCBToSavedExtension(const GraphicsControlBlock *GCB,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   309
                            GifFileType *GifFile,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   310
                            int ImageIndex);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   311
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   312
/******************************************************************************
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   313
 The library's internal utility font
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   314
******************************************************************************/
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   315
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   316
#define GIF_FONT_WIDTH  8
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   317
#define GIF_FONT_HEIGHT 8
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   318
extern const unsigned char GifAsciiTable8x8[][GIF_FONT_WIDTH];
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   319
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   320
extern void GifDrawText8x8(SavedImage *Image,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   321
                     const int x, const int y,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   322
                     const char *legend, const int color);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   323
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   324
extern void GifDrawBox(SavedImage *Image,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   325
                    const int x, const int y,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   326
                    const int w, const int d, const int color);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   327
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   328
extern void GifDrawRectangle(SavedImage *Image,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   329
                   const int x, const int y,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   330
                   const int w, const int d, const int color);
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   331
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   332
extern void GifDrawBoxedText8x8(SavedImage *Image,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   333
                          const int x, const int y,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   334
                          const char *legend,
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   335
                          const int border, const int bg, const int fg);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   336
90ce3da70b43 Initial load
duke
parents:
diff changeset
   337
#ifdef __cplusplus
90ce3da70b43 Initial load
duke
parents:
diff changeset
   338
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   339
#endif /* __cplusplus */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   340
#endif /* _GIF_LIB_H */
30496
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   341
aac453851104 8077982: GIFLIB upgrade
azvegint
parents: 25859
diff changeset
   342
/* end */