summaryrefslogtreecommitdiff
path: root/Build/source/libs/potrace/potrace-1.12/src/lzw.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/potrace/potrace-1.12/src/lzw.h')
-rw-r--r--Build/source/libs/potrace/potrace-1.12/src/lzw.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/Build/source/libs/potrace/potrace-1.12/src/lzw.h b/Build/source/libs/potrace/potrace-1.12/src/lzw.h
new file mode 100644
index 00000000000..8ac3ed6a109
--- /dev/null
+++ b/Build/source/libs/potrace/potrace-1.12/src/lzw.h
@@ -0,0 +1,50 @@
+/* Copyright (C) 2001-2015 Peter Selinger.
+ This file is part of Potrace. It is free software and it is covered
+ by the GNU General Public License. See the file COPYING for details. */
+
+
+#define LZW_NORMAL 0
+#define LZW_EOD 1
+
+/* user visible state */
+
+struct lzw_stream_s {
+ char *next_in; /* pointer to next input character */
+ int avail_in; /* number of input chars available */
+ char *next_out; /* pointer to next free byte in output buffer */
+ int avail_out; /* remaining size of output buffer */
+
+ void *internal; /* internal state, not user accessible */
+};
+typedef struct lzw_stream_s lzw_stream_t;
+
+/* user visible functions */
+
+/* The interface for compression and decompression is the same. The
+ application must first call lzw_init to create and initialize a
+ compression object. Then it calls lzw_compress on this object
+ repeatedly, as follows: next_in and next_out must point to valid,
+ non-overlapping regions of memory of size at least avail_in and
+ avail_out, respectively. The lzw_compress function will read and
+ process as many input bytes as possible as long as there is room in
+ the output buffer. It will update next_in, avail_in, next_out, and
+ avail_out accordingly. Some input may be consumed without producing
+ any output, or some output may be produced without consuming any
+ input. However, the lzw_compress function makes progress in the
+ sense that, after calling this function, at least one of avail_in
+ or avail_out is guaranteed to be 0. The mode flag is normally set
+ to LZW_NORMAL. It can be set to LZW_EOD (end of data) to indicate
+ that the current input buffer represents the entire remaining input
+ data stream. When called with mode=LZW_EOD, and avail_out is
+ non-zero after the call, then the application may conclude that the
+ end of output has been reached. (However, if avail_out==0 after the
+ call, then lzw_compress should be called again with the remaining
+ input, if any). Finally, lzw_free should be called to deallocate
+ the lzw_stream. Lzw_init returns NULL on error, with errno
+ set. Lzw_compress returns 0 on success, and 1 on error with errno
+ set. EINVAL is used to indicate an internal error, which should not
+ happen. */
+
+lzw_stream_t *lzw_init(void);
+int lzw_compress(lzw_stream_t *s, int mode);
+void lzw_free(lzw_stream_t *s);