mirror of
https://github.com/qpdf/qpdf.git
synced 2024-05-31 09:20:52 +00:00
e2dedde4bd
Breaking API change: length parameter has disappeared from the StreamDataProvider version of QPDFObjectHandle::replaceStreamData since it is no longer necessary to compute it in advance. This breaking change is justified by the fact that removing the length parameter provides the caller an opportunity to simplify the calling code.
60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
#ifndef __QPDF_STREAM_HH__
|
|
#define __QPDF_STREAM_HH__
|
|
|
|
#include <qpdf/Types.h>
|
|
|
|
#include <qpdf/QPDFObject.hh>
|
|
#include <qpdf/QPDFObjectHandle.hh>
|
|
|
|
class Pipeline;
|
|
class QPDF;
|
|
|
|
class QPDF_Stream: public QPDFObject
|
|
{
|
|
public:
|
|
QPDF_Stream(QPDF*, int objid, int generation,
|
|
QPDFObjectHandle stream_dict,
|
|
qpdf_offset_t offset, size_t 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<Buffer> getStreamData();
|
|
PointerHolder<Buffer> getRawStreamData();
|
|
void replaceStreamData(PointerHolder<Buffer> data,
|
|
QPDFObjectHandle const& filter,
|
|
QPDFObjectHandle const& decode_parms);
|
|
void replaceStreamData(
|
|
PointerHolder<QPDFObjectHandle::StreamDataProvider> provider,
|
|
QPDFObjectHandle const& filter,
|
|
QPDFObjectHandle const& decode_parms);
|
|
|
|
// 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<std::string, std::string> filter_abbreviations;
|
|
|
|
void replaceFilterData(QPDFObjectHandle const& filter,
|
|
QPDFObjectHandle const& decode_parms,
|
|
size_t length);
|
|
bool filterable(std::vector<std::string>& filters,
|
|
int& predictor, int& columns, bool& early_code_change);
|
|
|
|
QPDF* qpdf;
|
|
int objid;
|
|
int generation;
|
|
QPDFObjectHandle stream_dict;
|
|
qpdf_offset_t offset;
|
|
size_t length;
|
|
PointerHolder<Buffer> stream_data;
|
|
PointerHolder<QPDFObjectHandle::StreamDataProvider> stream_provider;
|
|
};
|
|
|
|
#endif // __QPDF_STREAM_HH__
|