1 #define MAXXSIZE 8192
2 #define HSIZE  5003
3 typedef int code_int;
4 typedef long int count_int;
5 typedef unsigned char char_type;
6 
7 /*****************************************************************************
8  *               vgl_GIFWriter
9  * This structure holds all the variables that were GLOBAL and non-constant
10  * in the original Haeberli TOGIF source.
11  *****************************************************************************
12  */
13 typedef struct _vgl_GIFWriter
14 {
15     unsigned long *buffer;	/* standard 32 bit pixel buffer */
16     unsigned short xsize;	/* width of image */
17     unsigned short ysize;	/* height of image */
18     int iscolor;		/* color or bw flag */
19 
20 	       /************** getgifpix2() variables ************************/
21     int currow;
22     short rbuf[MAXXSIZE];
23     short gbuf[MAXXSIZE];
24     short bbuf[MAXXSIZE];
25     short obuf[MAXXSIZE];
26 
27 	       /************** GIF specific variables *****************/
28     unsigned short curx, cury;
29     long countDown;
30     int pass;
31     int interlace;
32     unsigned long cur_accum;
33     int cur_bits;
34 
35 		/************ GIF image compression variables **************/
36     int n_bits;			/* number of bits/code */
37     int maxbits;		/* user settable max # bits/code */
38     code_int maxcode;		/* maximum code, given n_bits */
39     code_int maxmaxcode;	/* should NEVER generate this code */
40     count_int htab[HSIZE];
41     unsigned short codetab[HSIZE];
42     code_int hsize;		/* for dynamic table sizing */
43     code_int free_ent;		/* first unused entry */
44     int clear_flg;
45     int offset;
46     long int in_count;		/* length of input */
47     long int out_count;		/* # of codes output (for debugging) */
48     int g_init_bits;
49     int clearCode;
50     int EOFCode;
51     FILE *g_outfile;
52     int a_count;
53     char accum[256];
54 
55 	       /************** gammawarp() variables ************************/
56     float curgamma;
57     short gamtab[256];
58 
59 	       /************** ditherrow() variables ************************/
60     short **rtab;
61     short **gtab;
62     short **btab;
63 
64 } vgl_GIFWriter;
65 vgl_GIFWriter *vgl_GIFWriterBegin(void);
66 void vgl_GIFWriterWriteGIFFile(vgl_GIFWriter * gifwriter,
67 			       unsigned long *buffer, int xsize, int ysize,
68 			       int bwflag, FILE * outf);
69 void vgl_GIFWriterEnd(vgl_GIFWriter * gifwriter);
70