#define MAXXSIZE 8192 #define HSIZE 5003 typedef int code_int; typedef long int count_int; typedef unsigned char char_type; /***************************************************************************** * vgl_GIFWriter * This structure holds all the variables that were GLOBAL and non-constant * in the original Haeberli TOGIF source. ***************************************************************************** */ typedef struct _vgl_GIFWriter { unsigned long *buffer; /* standard 32 bit pixel buffer */ unsigned short xsize; /* width of image */ unsigned short ysize; /* height of image */ int iscolor; /* color or bw flag */ /************** getgifpix2() variables ************************/ int currow; short rbuf[MAXXSIZE]; short gbuf[MAXXSIZE]; short bbuf[MAXXSIZE]; short obuf[MAXXSIZE]; /************** GIF specific variables *****************/ unsigned short curx, cury; long countDown; int pass; int interlace; unsigned long cur_accum; int cur_bits; /************ GIF image compression variables **************/ int n_bits; /* number of bits/code */ int maxbits; /* user settable max # bits/code */ code_int maxcode; /* maximum code, given n_bits */ code_int maxmaxcode; /* should NEVER generate this code */ count_int htab[HSIZE]; unsigned short codetab[HSIZE]; code_int hsize; /* for dynamic table sizing */ code_int free_ent; /* first unused entry */ int clear_flg; int offset; long int in_count; /* length of input */ long int out_count; /* # of codes output (for debugging) */ int g_init_bits; int clearCode; int EOFCode; FILE *g_outfile; int a_count; char accum[256]; /************** gammawarp() variables ************************/ float curgamma; short gamtab[256]; /************** ditherrow() variables ************************/ short **rtab; short **gtab; short **btab; } vgl_GIFWriter; vgl_GIFWriter *vgl_GIFWriterBegin(void); void vgl_GIFWriterWriteGIFFile(vgl_GIFWriter * gifwriter, unsigned long *buffer, int xsize, int ysize, int bwflag, FILE * outf); void vgl_GIFWriterEnd(vgl_GIFWriter * gifwriter);