chimera2/image/gifp.h

144 lines
4.6 KiB
C

/*
* gifp.h
*
* Created from parts of old gifin.h
* John Kilburg (john@cs.unlv.edu)
*
* gifin.h
* kirk johnson
* november 1989
* external interface to gifin.c
*
* Copyright 1989 Kirk L. Johnson
* See the file COPYRIGHT for details
*/
/*
* the old gif.h file
*
* Copyright (C) 1995, John Kilburg (john@isri.unlv.edu)
*/
#define STAB_SIZE 4096 /* string table size */
#define PSTK_SIZE 4096 /* pixel stack size */
/*
* gifState
*/
typedef struct _gif_state
{
int state; /* state of GIF reader */
FormatLineProc lineProc; /* line callback */
void *closure; /* closure for callback */
Image *image;
int root_size; /* root code size */
int clr_code; /* clear code */
int eoi_code; /* end of information code */
int code_size; /* current code size */
int code_mask; /* current code mask */
int prev_code; /* previous code */
int first; /* */
unsigned work_data; /* working bit buffer */
int work_bits; /* working bit count */
byte *buf; /* byte buffer */
int buf_cnt; /* byte count */
int buf_idx; /* buffer index */
int table_size; /* string table size */
int prefix[STAB_SIZE]; /* string table : prefixes */
int extnsn[STAB_SIZE]; /* string table : extensions */
byte pstk[PSTK_SIZE]; /* pixel stack */
int pstk_idx; /* pixel stack pointer */
int pos; /* current read position */
byte *data; /* pointer to data */
int datalen; /* length of data */
int rast_width; /* raster width */
int rast_height; /* raster height */
byte g_cmap_flag; /* global colormap flag */
int g_pixel_bits; /* bits per pixel, global colormap */
int g_ncolors; /* number of colors, global colormap */
int g_ncolors_pos; /* number of colors processed, global colormap */
Intensity g_cmap[3][256]; /* global colormap */
int bg_color; /* background color index */
int color_bits; /* bits of color resolution */
int transparent; /* transparent color index */
int img_left; /* image position on raster */
int img_top; /* image position on raster */
int img_width; /* image width */
int img_height; /* image height */
byte have_dimensions; /* 1 when dimensions known */
byte l_cmap_flag; /* local colormap flag */
int l_pixel_bits; /* bits per pixel, local colormap */
int l_ncolors; /* number of colors, local colormap */
int l_ncolors_pos; /* number of colors processed, local colormap */
Intensity l_cmap[3][256]; /* local colormap */
byte interlace_flag; /* interlace image format flag */
} gifState;
/*
* end of old gif.h file
*/
/*
* gifin return codes
*/
#define GS_SUCCESS 0 /* success */
#define GS_DONE 1 /* no more images */
#define GS_NEED_DATA 2 /* needs more data */
#define GS_NEED_DATA_NOR 3 /* needs more data, no rewind */
#define GS_ERR_BAD_SD -1 /* bad screen descriptor */
#define GS_ERR_BAD_SEP -2 /* bad image separator */
#define GS_ERR_BAD_SIG -3 /* bad signature */
#define GS_ERR_EOD -4 /* unexpected end of raster data */
#define GS_ERR_EOF -5 /* unexpected end of input stream */
#define GS_ERR_FAO -6 /* file already open */
#define GS_ERR_IAO -7 /* image already open */
#define GS_ERR_NFO -8 /* no file open */
#define GS_ERR_NIO -9 /* no image open */
#define GS_ERR_BAD_STATE -10 /* bad state */
#define GS_ERR_NOMEM -11 /* allocation failure */
/*
* colormap indices
*/
#define GIF_RED 0
#define GIF_GRN 1
#define GIF_BLU 2
/*
* #defines, typedefs, and such
*/
#define GIF_SIG "GIF87a"
#define GIF_SIG_89 "GIF89a"
#define GIF_SIG_LEN 6 /* GIF signature length */
#define GIF_SD_SIZE 7 /* GIF screen descriptor size */
#define GIF_ID_SIZE 9 /* GIF image descriptor size */
#define GIF_SEPARATOR ',' /* GIF image separator */
#define GIF_EXTENSION '!' /* GIF extension block marker */
#define GIF_TERMINATOR ';' /* GIF terminator */
#define NULL_CODE -1 /* string table null code */
/*
* GIF states
*/
#define GS_OPEN_FILE 0
#define GS_OPEN_IMAGE 1
#define GS_LOAD_G_CMAP 2
#define GS_LOAD_L_CMAP 4
#define GS_DECODE_DATA 5
#define GS_MAKE_IMAGE 6
#define GS_INIT_DECODER 8
#define GS_READ_SIG 9
#define GS_READ_IMAGE_HEADER 10