< prev index next >
src/java.desktop/share/native/libsplashscreen/giflib/gif_lib.h
Print this page
*** 21,179 ****
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/******************************************************************************
- * In order to make life a little bit easier when using the GIF file format,
- * this library was written, and which does all the dirty work...
- *
- * Written by Gershon Elber, Jun. 1989
- * Hacks by Eric S. Raymond, Sep. 1992
- ******************************************************************************
- * History:
- * 14 Jun 89 - Version 1.0 by Gershon Elber.
- * 3 Sep 90 - Version 1.1 by Gershon Elber (Support for Gif89, Unique names)
- * 15 Sep 90 - Version 2.0 by Eric S. Raymond (Changes to suoport GIF slurp)
- * 26 Jun 96 - Version 3.0 by Eric S. Raymond (Full GIF89 support)
- * 17 Dec 98 - Version 4.0 by Toshio Kuratomi (Fix extension writing code)
- *****************************************************************************/
! /* all encoding functionality stripped */
#ifndef _GIF_LIB_H_
#define _GIF_LIB_H_ 1
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
! #define GIF_LIB_VERSION " Version 4.1, "
#define GIF_ERROR 0
#define GIF_OK 1
! #ifndef TRUE
! #define TRUE 1
! #endif /* TRUE */
! #ifndef FALSE
! #define FALSE 0
! #endif /* FALSE */
!
! #ifndef NULL
! #define NULL 0
! #endif /* NULL */
#define GIF_STAMP "GIFVER" /* First chars in file - GIF stamp. */
#define GIF_STAMP_LEN sizeof(GIF_STAMP) - 1
#define GIF_VERSION_POS 3 /* Version first character in stamp. */
#define GIF87_STAMP "GIF87a" /* First chars in file - GIF stamp. */
#define GIF89_STAMP "GIF89a" /* First chars in file - GIF stamp. */
- #define GIF_FILE_BUFFER_SIZE 16384 /* Files uses bigger buffers than usual. */
-
- typedef int GifBooleanType;
typedef unsigned char GifPixelType;
typedef unsigned char *GifRowType;
typedef unsigned char GifByteType;
!
! #define GIF_MESSAGE(Msg) fprintf(stderr, "\n%s: %s\n", PROGRAM_NAME, Msg)
! #define GIF_EXIT(Msg) { GIF_MESSAGE(Msg); exit(-3); }
!
! #ifdef SYSV
! #define VoidPtr char *
! #else
! #define VoidPtr void *
! #endif /* SYSV */
typedef struct GifColorType {
GifByteType Red, Green, Blue;
} GifColorType;
typedef struct ColorMapObject {
int ColorCount;
int BitsPerPixel;
GifColorType *Colors; /* on malloc(3) heap */
} ColorMapObject;
typedef struct GifImageDesc {
! int Left, Top, Width, Height, /* Current image dimensions. */
! Interlace; /* Sequential/Interlaced lines. */
ColorMapObject *ColorMap; /* The local color map */
} GifImageDesc;
typedef struct GifFileType {
! int SWidth, SHeight, /* Screen dimensions. */
! SColorResolution, /* How many colors can we generate? */
! SBackGroundColor; /* I hope you understand this one... */
! ColorMapObject *SColorMap; /* NULL if not exists. */
! int ImageCount; /* Number of current image */
! GifImageDesc Image; /* Block describing current image */
! struct SavedImage *SavedImages; /* Use this to accumulate file state */
! VoidPtr UserData; /* hook to attach user data (TVT) */
! VoidPtr Private; /* Don't mess with this! */
} GifFileType;
typedef enum {
UNDEFINED_RECORD_TYPE,
SCREEN_DESC_RECORD_TYPE,
IMAGE_DESC_RECORD_TYPE, /* Begin with ',' */
EXTENSION_RECORD_TYPE, /* Begin with '!' */
TERMINATE_RECORD_TYPE /* Begin with ';' */
} GifRecordType;
- /* DumpScreen2Gif routine constants identify type of window/screen to dump.
- * Note all values below 1000 are reserved for the IBMPC different display
- * devices (it has many!) and are compatible with the numbering TC2.0
- * (Turbo C 2.0 compiler for IBM PC) gives to these devices.
- */
- typedef enum {
- GIF_DUMP_SGI_WINDOW = 1000,
- GIF_DUMP_X_WINDOW = 1001
- } GifScreenDumpType;
-
/* func type to read gif data from arbitrary sources (TVT) */
typedef int (*InputFunc) (GifFileType *, GifByteType *, int);
! /* func type to write gif data ro arbitrary targets.
* Returns count of bytes written. (MRB)
*/
typedef int (*OutputFunc) (GifFileType *, const GifByteType *, int);
/******************************************************************************
! * GIF89 extension function codes
******************************************************************************/
! #define COMMENT_EXT_FUNC_CODE 0xfe /* comment */
! #define GRAPHICS_EXT_FUNC_CODE 0xf9 /* graphics control */
! #define PLAINTEXT_EXT_FUNC_CODE 0x01 /* plaintext */
! #define APPLICATION_EXT_FUNC_CODE 0xff /* application block */
/******************************************************************************
! * O.K., here are the routines one can access in order to decode GIF file:
! * (GIF_LIB file DGIF_LIB.C).
! *****************************************************************************/
!
! GifFileType *DGifOpenFileName(const char *GifFileName);
! GifFileType *DGifOpenFileHandle(int GifFileHandle);
! GifFileType *DGifOpen(void *userPtr, InputFunc readFunc); /* new one
! * (TVT) */
int DGifSlurp(GifFileType * GifFile);
! int DGifGetScreenDesc(GifFileType * GifFile);
! int DGifGetRecordType(GifFileType * GifFile, GifRecordType * GifType);
! int DGifGetImageDesc(GifFileType * GifFile);
! int DGifGetLine(GifFileType * GifFile, GifPixelType * GifLine, int GifLineLen);
! int DGifGetPixel(GifFileType * GifFile, GifPixelType GifPixel);
! int DGifGetComment(GifFileType * GifFile, char *GifComment);
! int DGifGetExtension(GifFileType * GifFile, int *GifExtCode,
! GifByteType ** GifExtension);
! int DGifGetExtensionNext(GifFileType * GifFile, GifByteType ** GifExtension);
! int DGifGetCode(GifFileType * GifFile, int *GifCodeSize,
! GifByteType ** GifCodeBlock);
! int DGifGetCodeNext(GifFileType * GifFile, GifByteType ** GifCodeBlock);
! int DGifGetLZCodes(GifFileType * GifFile, int *GifCode);
! int DGifCloseFile(GifFileType * GifFile);
#define D_GIF_ERR_OPEN_FAILED 101 /* And DGif possible errors. */
#define D_GIF_ERR_READ_FAILED 102
#define D_GIF_ERR_NOT_GIF_FILE 103
#define D_GIF_ERR_NO_SCRN_DSCR 104
#define D_GIF_ERR_NO_IMAG_DSCR 105
--- 21,220 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/******************************************************************************
! gif_lib.h - service library for decoding and encoding GIF images
!
! *****************************************************************************/
#ifndef _GIF_LIB_H_
#define _GIF_LIB_H_ 1
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
! #define GIFLIB_MAJOR 5
! #define GIFLIB_MINOR 1
! #define GIFLIB_RELEASE 1
#define GIF_ERROR 0
#define GIF_OK 1
! #include <stddef.h>
!
! #ifdef bool
! #undef bool
! #endif
! typedef int bool;
! #define false 0
! #define true 1
#define GIF_STAMP "GIFVER" /* First chars in file - GIF stamp. */
#define GIF_STAMP_LEN sizeof(GIF_STAMP) - 1
#define GIF_VERSION_POS 3 /* Version first character in stamp. */
#define GIF87_STAMP "GIF87a" /* First chars in file - GIF stamp. */
#define GIF89_STAMP "GIF89a" /* First chars in file - GIF stamp. */
typedef unsigned char GifPixelType;
typedef unsigned char *GifRowType;
typedef unsigned char GifByteType;
! typedef unsigned int GifPrefixType;
! typedef int GifWord;
typedef struct GifColorType {
GifByteType Red, Green, Blue;
} GifColorType;
typedef struct ColorMapObject {
int ColorCount;
int BitsPerPixel;
+ bool SortFlag;
GifColorType *Colors; /* on malloc(3) heap */
} ColorMapObject;
typedef struct GifImageDesc {
! GifWord Left, Top, Width, Height; /* Current image dimensions. */
! bool Interlace; /* Sequential/Interlaced lines. */
ColorMapObject *ColorMap; /* The local color map */
} GifImageDesc;
+ typedef struct ExtensionBlock {
+ int ByteCount;
+ GifByteType *Bytes; /* on malloc(3) heap */
+ int Function; /* The block function code */
+ #define CONTINUE_EXT_FUNC_CODE 0x00 /* continuation subblock */
+ #define COMMENT_EXT_FUNC_CODE 0xfe /* comment */
+ #define GRAPHICS_EXT_FUNC_CODE 0xf9 /* graphics control (GIF89) */
+ #define PLAINTEXT_EXT_FUNC_CODE 0x01 /* plaintext */
+ #define APPLICATION_EXT_FUNC_CODE 0xff /* application block */
+ } ExtensionBlock;
+
+ typedef struct SavedImage {
+ GifImageDesc ImageDesc;
+ GifByteType *RasterBits; /* on malloc(3) heap */
+ int ExtensionBlockCount; /* Count of extensions before image */
+ ExtensionBlock *ExtensionBlocks; /* Extensions before image */
+ } SavedImage;
+
typedef struct GifFileType {
! GifWord SWidth, SHeight; /* Size of virtual canvas */
! GifWord SColorResolution; /* How many colors can we generate? */
! GifWord SBackGroundColor; /* Background color for virtual canvas */
! GifByteType AspectByte; /* Used to compute pixel aspect ratio */
! ColorMapObject *SColorMap; /* Global colormap, NULL if nonexistent. */
! int ImageCount; /* Number of current image (both APIs) */
! GifImageDesc Image; /* Current image (low-level API) */
! SavedImage *SavedImages; /* Image sequence (high-level API) */
! int ExtensionBlockCount; /* Count extensions past last image */
! ExtensionBlock *ExtensionBlocks; /* Extensions past last image */
! int Error; /* Last error condition reported */
! void *UserData; /* hook to attach user data (TVT) */
! void *Private; /* Don't mess with this! */
} GifFileType;
+ #define GIF_ASPECT_RATIO(n) ((n)+15.0/64.0)
+
typedef enum {
UNDEFINED_RECORD_TYPE,
SCREEN_DESC_RECORD_TYPE,
IMAGE_DESC_RECORD_TYPE, /* Begin with ',' */
EXTENSION_RECORD_TYPE, /* Begin with '!' */
TERMINATE_RECORD_TYPE /* Begin with ';' */
} GifRecordType;
/* func type to read gif data from arbitrary sources (TVT) */
typedef int (*InputFunc) (GifFileType *, GifByteType *, int);
! /* func type to write gif data to arbitrary targets.
* Returns count of bytes written. (MRB)
*/
typedef int (*OutputFunc) (GifFileType *, const GifByteType *, int);
/******************************************************************************
! GIF89 structures
******************************************************************************/
! typedef struct GraphicsControlBlock {
! int DisposalMode;
! #define DISPOSAL_UNSPECIFIED 0 /* No disposal specified. */
! #define DISPOSE_DO_NOT 1 /* Leave image in place */
! #define DISPOSE_BACKGROUND 2 /* Set area too background color */
! #define DISPOSE_PREVIOUS 3 /* Restore to previous content */
! bool UserInputFlag; /* User confirmation required before disposal */
! int DelayTime; /* pre-display delay in 0.01sec units */
! int TransparentColor; /* Palette index for transparency, -1 if none */
! #define NO_TRANSPARENT_COLOR -1
! } GraphicsControlBlock;
/******************************************************************************
! GIF encoding routines
! ******************************************************************************/
!
! /* Main entry points */
! GifFileType *EGifOpenFileName(const char *GifFileName,
! const bool GifTestExistence, int *Error);
! GifFileType *EGifOpenFileHandle(const int GifFileHandle, int *Error);
! GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc, int *Error);
! int EGifSpew(GifFileType * GifFile);
! const char *EGifGetGifVersion(GifFileType *GifFile); /* new in 5.x */
! int EGifCloseFile(GifFileType *GifFile, int *ErrorCode);
!
! #define E_GIF_SUCCEEDED 0
! #define E_GIF_ERR_OPEN_FAILED 1 /* And EGif possible errors. */
! #define E_GIF_ERR_WRITE_FAILED 2
! #define E_GIF_ERR_HAS_SCRN_DSCR 3
! #define E_GIF_ERR_HAS_IMAG_DSCR 4
! #define E_GIF_ERR_NO_COLOR_MAP 5
! #define E_GIF_ERR_DATA_TOO_BIG 6
! #define E_GIF_ERR_NOT_ENOUGH_MEM 7
! #define E_GIF_ERR_DISK_IS_FULL 8
! #define E_GIF_ERR_CLOSE_FAILED 9
! #define E_GIF_ERR_NOT_WRITEABLE 10
!
! /* These are legacy. You probably do not want to call them directly */
! int EGifPutScreenDesc(GifFileType *GifFile,
! const int GifWidth, const int GifHeight,
! const int GifColorRes,
! const int GifBackGround,
! const ColorMapObject *GifColorMap);
! int EGifPutImageDesc(GifFileType *GifFile,
! const int GifLeft, const int GifTop,
! const int GifWidth, const int GifHeight,
! const bool GifInterlace,
! const ColorMapObject *GifColorMap);
! void EGifSetGifVersion(GifFileType *GifFile, const bool gif89);
! int EGifPutLine(GifFileType *GifFile, GifPixelType *GifLine,
! int GifLineLen);
! int EGifPutPixel(GifFileType *GifFile, const GifPixelType GifPixel);
! int EGifPutComment(GifFileType *GifFile, const char *GifComment);
! int EGifPutExtensionLeader(GifFileType *GifFile, const int GifExtCode);
! int EGifPutExtensionBlock(GifFileType *GifFile,
! const int GifExtLen, const void *GifExtension);
! int EGifPutExtensionTrailer(GifFileType *GifFile);
! int EGifPutExtension(GifFileType *GifFile, const int GifExtCode,
! const int GifExtLen,
! const void *GifExtension);
! int EGifPutCode(GifFileType *GifFile, int GifCodeSize,
! const GifByteType *GifCodeBlock);
! int EGifPutCodeNext(GifFileType *GifFile,
! const GifByteType *GifCodeBlock);
!
! /******************************************************************************
! GIF decoding routines
! ******************************************************************************/
!
! /* Main entry points */
! GifFileType *DGifOpenFileName(const char *GifFileName, int *Error);
! GifFileType *DGifOpenFileHandle(int GifFileHandle, int *Error);
int DGifSlurp(GifFileType * GifFile);
! GifFileType *DGifOpen(void *userPtr, InputFunc readFunc, int *Error); /* new one (TVT) */
! int DGifCloseFile(GifFileType * GifFile, int *ErrorCode);
+ #define D_GIF_SUCCEEDED 0
#define D_GIF_ERR_OPEN_FAILED 101 /* And DGif possible errors. */
#define D_GIF_ERR_READ_FAILED 102
#define D_GIF_ERR_NOT_GIF_FILE 103
#define D_GIF_ERR_NO_SCRN_DSCR 104
#define D_GIF_ERR_NO_IMAG_DSCR 105
*** 184,253 ****
#define D_GIF_ERR_CLOSE_FAILED 110
#define D_GIF_ERR_NOT_READABLE 111
#define D_GIF_ERR_IMAGE_DEFECT 112
#define D_GIF_ERR_EOF_TOO_SOON 113
/******************************************************************************
! * O.K., here are the routines from GIF_LIB file GIF_ERR.C.
******************************************************************************/
! extern void PrintGifError(void);
! extern int GifLastError(void);
/******************************************************************************
! * O.K., here are the routines from GIF_LIB file DEV2GIF.C.
******************************************************************************/
! extern int DumpScreen2Gif(const char *FileName,
! int ReqGraphDriver,
! long ReqGraphMode1,
! long ReqGraphMode2,
! long ReqGraphMode3);
/*****************************************************************************
! *
! * Everything below this point is new after version 1.2, supporting `slurp
! * mode' for doing I/O in two big belts with all the image-bashing in core.
! *
! *****************************************************************************/
/******************************************************************************
! * Color Map handling from ALLOCGIF.C
! *****************************************************************************/
! extern ColorMapObject *MakeMapObject(int ColorCount,
! const GifColorType * ColorMap);
! extern void FreeMapObject(ColorMapObject * Object);
! extern int BitSize(int n);
/******************************************************************************
! * Support for the in-core structures allocation (slurp mode).
! *****************************************************************************/
! /* This is the in-core version of an extension record */
! typedef struct {
! int ByteCount;
! char *Bytes; /* on malloc(3) heap */
! int Function; /* Holds the type of the Extension block. */
! } ExtensionBlock;
! /* This holds an image header, its unpacked raster bits, and extensions */
! typedef struct SavedImage {
! GifImageDesc ImageDesc;
! unsigned char *RasterBits; /* on malloc(3) heap */
! int Function; /* DEPRECATED: Use ExtensionBlocks[x].Function instead */
! int ExtensionBlockCount;
! ExtensionBlock *ExtensionBlocks; /* on malloc(3) heap */
! } SavedImage;
! extern void MakeExtension(SavedImage * New, int Function);
! extern int AddExtensionBlock(SavedImage * New, int Len,
! unsigned char ExtData[]);
! extern void FreeExtension(SavedImage * Image);
! extern SavedImage *MakeSavedImage(GifFileType * GifFile,
! const SavedImage * CopyFrom);
! extern void FreeSavedImages(GifFileType * GifFile);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _GIF_LIB_H */
--- 225,339 ----
#define D_GIF_ERR_CLOSE_FAILED 110
#define D_GIF_ERR_NOT_READABLE 111
#define D_GIF_ERR_IMAGE_DEFECT 112
#define D_GIF_ERR_EOF_TOO_SOON 113
+ /* These are legacy. You probably do not want to call them directly */
+ int DGifGetScreenDesc(GifFileType *GifFile);
+ int DGifGetRecordType(GifFileType *GifFile, GifRecordType *GifType);
+ int DGifGetImageDesc(GifFileType *GifFile);
+ int DGifGetLine(GifFileType *GifFile, GifPixelType *GifLine, int GifLineLen);
+ int DGifGetPixel(GifFileType *GifFile, GifPixelType GifPixel);
+ int DGifGetComment(GifFileType *GifFile, char *GifComment);
+ int DGifGetExtension(GifFileType *GifFile, int *GifExtCode,
+ GifByteType **GifExtension);
+ int DGifGetExtensionNext(GifFileType *GifFile, GifByteType **GifExtension);
+ int DGifGetCode(GifFileType *GifFile, int *GifCodeSize,
+ GifByteType **GifCodeBlock);
+ int DGifGetCodeNext(GifFileType *GifFile, GifByteType **GifCodeBlock);
+ int DGifGetLZCodes(GifFileType *GifFile, int *GifCode);
+
/******************************************************************************
! Color table quantization (deprecated)
******************************************************************************/
! int GifQuantizeBuffer(unsigned int Width, unsigned int Height,
! int *ColorMapSize, GifByteType * RedInput,
! GifByteType * GreenInput, GifByteType * BlueInput,
! GifByteType * OutputBuffer,
! GifColorType * OutputColorMap);
/******************************************************************************
! Error handling and reporting.
******************************************************************************/
! extern const char *GifErrorString(int ErrorCode); /* new in 2012 - ESR */
/*****************************************************************************
! Everything below this point is new after version 1.2, supporting `slurp
! mode' for doing I/O in two big belts with all the image-bashing in core.
! ******************************************************************************/
/******************************************************************************
! Color map handling from gif_alloc.c
! ******************************************************************************/
! extern ColorMapObject *GifMakeMapObject(int ColorCount,
! const GifColorType *ColorMap);
! extern void GifFreeMapObject(ColorMapObject *Object);
! extern ColorMapObject *GifUnionColorMap(const ColorMapObject *ColorIn1,
! const ColorMapObject *ColorIn2,
! GifPixelType ColorTransIn2[]);
! extern int GifBitSize(int n);
/******************************************************************************
! Support for the in-core structures allocation (slurp mode).
! ******************************************************************************/
! extern void GifApplyTranslation(SavedImage *Image, GifPixelType Translation[]);
! extern int GifAddExtensionBlock(int *ExtensionBlock_Count,
! ExtensionBlock **ExtensionBlocks,
! int Function,
! unsigned int Len, unsigned char ExtData[]);
! extern void GifFreeExtensions(int *ExtensionBlock_Count,
! ExtensionBlock **ExtensionBlocks);
! extern SavedImage *GifMakeSavedImage(GifFileType *GifFile,
! const SavedImage *CopyFrom);
! extern void GifFreeSavedImages(GifFileType *GifFile);
! /******************************************************************************
! 5.x functions for GIF89 graphics control blocks
! ******************************************************************************/
! int DGifExtensionToGCB(const size_t GifExtensionLength,
! const GifByteType *GifExtension,
! GraphicsControlBlock *GCB);
! size_t EGifGCBToExtension(const GraphicsControlBlock *GCB,
! GifByteType *GifExtension);
!
! int DGifSavedExtensionToGCB(GifFileType *GifFile,
! int ImageIndex,
! GraphicsControlBlock *GCB);
! int EGifGCBToSavedExtension(const GraphicsControlBlock *GCB,
! GifFileType *GifFile,
! int ImageIndex);
+ /******************************************************************************
+ The library's internal utility font
+ ******************************************************************************/
+
+ #define GIF_FONT_WIDTH 8
+ #define GIF_FONT_HEIGHT 8
+ extern const unsigned char GifAsciiTable8x8[][GIF_FONT_WIDTH];
+
+ extern void GifDrawText8x8(SavedImage *Image,
+ const int x, const int y,
+ const char *legend, const int color);
+
+ extern void GifDrawBox(SavedImage *Image,
+ const int x, const int y,
+ const int w, const int d, const int color);
+
+ extern void GifDrawRectangle(SavedImage *Image,
+ const int x, const int y,
+ const int w, const int d, const int color);
+
+ extern void GifDrawBoxedText8x8(SavedImage *Image,
+ const int x, const int y,
+ const char *legend,
+ const int border, const int bg, const int fg);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _GIF_LIB_H */
+
+ /* end */
< prev index next >