File: i_rle.h

package info (click to toggle)
plotutils 2.4.1-11
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 11,676 kB
  • ctags: 6,967
  • sloc: ansic: 76,305; sh: 15,172; cpp: 12,403; yacc: 2,604; makefile: 888; lex: 144
file content (53 lines) | stat: -rw-r--r-- 1,537 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/* This header file (i_rle.h) defines the external interface to the module
   i_rle.c, which does run-length encoding on a sequence of integers
   ("pixel values"), and writes the resulting encoded sequence to an output
   stream.  The encoded sequence should be GIF-compatible, even though the
   compression technique is not LZW.

   The module encapsulates the miGIF compression routines, originally
   written by der Mouse and ivo.  Their copyright notice appears in
   i_rle.c. */

/* an `int' should be able to hold 2**GIFBITS distinct values, together
   with -1 */
#define GIFBITS 12

/* the RLE output structure */
typedef struct
{
  int rl_pixel;
  int rl_basecode;
  int rl_count;
  int rl_table_pixel;
  int rl_table_max;
  bool just_cleared;
  int out_bits;
  int out_bits_init;
  int out_count;
  int out_bump;
  int out_bump_init;
  int out_clear;
  int out_clear_init;
  int max_ocodes;
  int code_clear;
  int code_eof;
  unsigned int obuf;
  int obits;
  FILE *ofile;
#ifdef LIBPLOTTER
  ostream *outstream;
#endif
  unsigned char oblock[256];
  int oblen;
} rle_out;

/* create, initialize, and return a new RLE output structure */
#ifdef LIBPLOTTER
extern rle_out *_rle_init ____P((FILE *fp, ostream *out, int bit_depth));
#else
extern rle_out *_rle_init ____P((FILE *fp, int bit_depth));
#endif
/* write a single integer (pixel) to the structure */
extern void _rle_do_pixel ____P((rle_out *rle, int c));
/* wind things up and deallocate the RLE output structure */
extern void _rle_terminate ____P((rle_out *rle));