//======================================================================== // // FlateStream.h // // Copyright (C) 2005, Jeff Muizelaar // // This file is under the GPLv2 or later license // //======================================================================== #ifndef FLATESTREAM_H #define FLATESTREAM_H #include #ifdef USE_GCC_PRAGMAS #pragma interface #endif #ifdef USE_GCC_PRAGMAS #pragma implementation #endif #include #include #include #ifdef HAVE_UNISTD_H #include #endif #include #include #include "goo/gmem.h" #include "goo/gfile.h" #include "poppler-config.h" #include "Error.h" #include "Object.h" #include "Decrypt.h" #include "Stream.h" extern "C" { #include } class FlateStream: public FilterStream { public: FlateStream(Stream *strA, int predictor, int columns, int colors, int bits); virtual ~FlateStream(); virtual StreamKind getKind() { return strFlate; } virtual void reset(); virtual int getChar(); virtual int lookChar(); virtual int getRawChar(); virtual GooString *getPSFilter(int psLevel, char *indent); virtual GBool isBinary(GBool last = gTrue); private: int fill_buffer(void); z_stream d_stream; StreamPredictor *pred; int status; /* in_buf currently needs to be 1 or we over read from EmbedStreams */ unsigned char in_buf[1]; unsigned char out_buf[4096]; int out_pos; int out_buf_len; }; #endif