beta-0.89.2
[luatex.git] / source / libs / poppler / poppler-src / poppler / FlateStream.h
blob9e3835f042ab99f28f0c734d515d0f164d4714d5
1 //========================================================================
2 //
3 // FlateStream.h
4 //
5 // Copyright (C) 2005, Jeff Muizelaar <jeff@infidigm.net>
6 // Copyright (C) 2010, 2011, Albert Astals Cid <aacid@kde.org>
7 //
8 // This file is under the GPLv2 or later license
9 //
10 //========================================================================
12 #ifndef FLATESTREAM_H
13 #define FLATESTREAM_H
15 #ifdef USE_GCC_PRAGMAS
16 #pragma interface
17 #endif
20 #ifdef USE_GCC_PRAGMAS
21 #pragma implementation
22 #endif
24 #include "poppler-config.h"
25 #include <stdio.h>
26 #include <stdlib.h>
27 #include <stddef.h>
28 #ifdef HAVE_UNISTD_H
29 #include <unistd.h>
30 #endif
31 #include <string.h>
32 #include <ctype.h>
33 #include "goo/gmem.h"
34 #include "goo/gfile.h"
35 #include "Error.h"
36 #include "Object.h"
37 #include "Decrypt.h"
38 #include "Stream.h"
40 extern "C" {
41 #include <zlib.h>
44 class FlateStream: public FilterStream {
45 public:
47 FlateStream(Stream *strA, int predictor, int columns, int colors, int bits);
48 virtual ~FlateStream();
49 virtual StreamKind getKind() { return strFlate; }
50 virtual void reset();
51 virtual int getChar();
52 virtual int lookChar();
53 virtual int getRawChar();
54 virtual void getRawChars(int nChars, int *buffer);
55 virtual GooString *getPSFilter(int psLevel, const char *indent);
56 virtual GBool isBinary(GBool last = gTrue);
58 private:
59 inline int doGetRawChar() {
60 if (fill_buffer())
61 return EOF;
63 return out_buf[out_pos++];
66 int fill_buffer(void);
67 z_stream d_stream;
68 StreamPredictor *pred;
69 int status;
70 /* in_buf currently needs to be 1 or we over read from EmbedStreams */
71 unsigned char in_buf[1];
72 unsigned char out_buf[4096];
73 int out_pos;
74 int out_buf_len;
77 #endif