#ifndef __QPDF_STREAM_HH__ #define __QPDF_STREAM_HH__ #include #include class Pipeline; class QPDF; class QPDF_Stream: public QPDFObject { public: QPDF_Stream(QPDF*, int objid, int generation, QPDFObjectHandle stream_dict, off_t offset, int length); virtual ~QPDF_Stream(); virtual std::string unparse(); QPDFObjectHandle getDict() const; // See comments in QPDFObjectHandle.hh for these methods. bool pipeStreamData(Pipeline*, bool filter, bool normalize, bool compress); PointerHolder getStreamData(); PointerHolder getRawStreamData(); void replaceStreamData(PointerHolder data, QPDFObjectHandle const& filter, QPDFObjectHandle const& decode_parms); void replaceStreamData( PointerHolder provider, QPDFObjectHandle const& filter, QPDFObjectHandle const& decode_parms, size_t length); // Replace object ID and generation. This may only be called if // object ID and generation are 0. It is used by QPDFObjectHandle // when adding streams to files. void setObjGen(int objid, int generation); private: static std::map filter_abbreviations; void replaceFilterData(QPDFObjectHandle const& filter, QPDFObjectHandle const& decode_parms, size_t length); bool filterable(std::vector& filters, int& predictor, int& columns, bool& early_code_change); QPDF* qpdf; int objid; int generation; QPDFObjectHandle stream_dict; off_t offset; int length; PointerHolder stream_data; PointerHolder stream_provider; }; #endif // __QPDF_STREAM_HH__