summaryrefslogtreecommitdiff
path: root/include/mupdf/fitz/compress.h
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2017-10-09 17:36:36 +0100
committerRobin Watts <robin.watts@artifex.com>2017-10-13 15:57:25 +0100
commit680594660b6b680326cd56fe5ea604a0b55efcfa (patch)
tree5dc41ad31fd8d61f0633728c870750c9cbd11389 /include/mupdf/fitz/compress.h
parent167da6144dc8bcafc1f1476d73b3b6d18541a8a8 (diff)
downloadmupdf-680594660b6b680326cd56fe5ea604a0b55efcfa.tar.xz
Add fz_deflate family of functions.
This gives us a friendlier interface to zlib. Simplifies PNG output and PCLM output code.
Diffstat (limited to 'include/mupdf/fitz/compress.h')
-rw-r--r--include/mupdf/fitz/compress.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/include/mupdf/fitz/compress.h b/include/mupdf/fitz/compress.h
new file mode 100644
index 00000000..cfd4ed1a
--- /dev/null
+++ b/include/mupdf/fitz/compress.h
@@ -0,0 +1,50 @@
+#ifndef MUPDF_FITZ_COMPRESS_H
+#define MUPDF_FITZ_COMPRESS_H
+
+#include "mupdf/fitz/system.h"
+
+typedef enum
+{
+ FZ_DEFLATE_NONE = 0,
+ FZ_DEFLATE_BEST_SPEED = 1,
+ FZ_DEFLATE_BEST = 9,
+ FZ_DEFLATE_DEFAULT = -1
+} fz_deflate_level;
+
+/*
+ fz_deflate_bound: Returns the upper bound on the
+ size of flated data of length size.
+ */
+size_t fz_deflate_bound(fz_context *ctx, size_t size);
+
+/*
+ fz_deflate: Compress source_length bytes of data starting
+ at source, into a buffer of length *destLen, starting at dest.
+ *compressed_length will be updated on exit to contain the size
+ actually used.
+ */
+void fz_deflate(fz_context *ctx, unsigned char *dest, size_t *compressed_length, const unsigned char *source, size_t source_length, fz_deflate_level level);
+
+/*
+ fz_new_deflated_data: Compress source_length bytes of data starting
+ at source, into a new memory block malloced for that purpose.
+ *compressed_length is updated on exit to contain the size used.
+ Ownership of the block is returned from this function, and the
+ caller is therefore responsible for freeing it. The block may be
+ considerably larger than is actually required. The caller is
+ free to fz_realloc it down if it wants to.
+*/
+unsigned char *fz_new_deflated_data(fz_context *ctx, size_t *compressed_length, const unsigned char *source, size_t source_length, fz_deflate_level level);
+
+/*
+ fz_new_deflated_data_from_buffer: Compress the contents of a fz_buffer into a
+ new block malloced for that purpose. *compressed_length is updated
+ on exit to contain the size used. Ownership of the block is
+ returned from this function, and the caller is therefore responsible
+ for freeing it. The block may be considerably larger than is
+ actually required. The caller is free to fz_realloc it down if it
+ wants to.
+*/
+unsigned char *fz_new_deflated_data_from_buffer(fz_context *ctx, size_t *compressed_length, fz_buffer *buffer, fz_deflate_level level);
+
+#endif