togif.h 2.2 KB

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