summaryrefslogtreecommitdiff
path: root/gtk+-mingw/include/jbig_ar.h
diff options
context:
space:
mode:
Diffstat (limited to 'gtk+-mingw/include/jbig_ar.h')
-rw-r--r--gtk+-mingw/include/jbig_ar.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/gtk+-mingw/include/jbig_ar.h b/gtk+-mingw/include/jbig_ar.h
new file mode 100644
index 0000000..a938375
--- /dev/null
+++ b/gtk+-mingw/include/jbig_ar.h
@@ -0,0 +1,55 @@
+/*
+ * Header file for the arithmetic encoder and decoder of
+ * the portable JBIG compression library
+ *
+ * Markus Kuhn -- http://www.cl.cam.ac.uk/~mgk25/jbigkit/
+ *
+ * $Id: jbig_ar.h 1291 2008-08-21 14:50:29Z mgk25 $
+ */
+
+#ifndef JBG_AR_H
+#define JBG_AR_H
+
+/*
+ * Status of arithmetic encoder
+ */
+
+struct jbg_arenc_state {
+ unsigned char st[4096]; /* probability status for contexts, MSB = MPS */
+ unsigned long c; /* register C: base of coding intervall, *
+ * layout as in Table 23 */
+ unsigned long a; /* register A: normalized size of coding interval */
+ long sc; /* number of buffered 0xff values that might still overflow */
+ int ct; /* bit shift counter, determines when next byte will be written */
+ int buffer; /* buffer for most recent output byte != 0xff */
+ void (*byte_out)(int, void *); /* function that receives all PSCD bytes */
+ void *file; /* parameter passed to byte_out */
+};
+
+/*
+ * Status of arithmetic decoder
+ */
+
+struct jbg_ardec_state {
+ unsigned char st[4096]; /* probability status for contexts, MSB = MPS */
+ unsigned long c; /* register C: base of coding intervall, *
+ * layout as in Table 25 */
+ unsigned long a; /* register A: normalized size of coding interval */
+ unsigned char *pscd_ptr; /* pointer to next PSCD data byte */
+ unsigned char *pscd_end; /* pointer to byte after PSCD */
+ int ct; /* bit-shift counter, determines when next byte will be read;
+ * special value -1 signals that zero-padding has started */
+ int startup; /* boolean flag that controls initial fill of s->c */
+ int nopadding; /* boolean flag that triggers return -2 between
+ * reaching PSCD end and decoding the first symbol
+ * that might never have been encoded in the first
+ * place */
+};
+
+void arith_encode_init(struct jbg_arenc_state *s, int reuse_st);
+void arith_encode_flush(struct jbg_arenc_state *s);
+void arith_encode(struct jbg_arenc_state *s, int cx, int pix);
+void arith_decode_init(struct jbg_ardec_state *s, int reuse_st);
+int arith_decode(struct jbg_ardec_state *s, int cx);
+
+#endif /* JBG_AR_H */