diff options
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 7 | ||||
-rw-r--r-- | libqpdf/QPDF_Stream.cc | 25 | ||||
-rw-r--r-- | libqpdf/qpdf/QPDF_Stream.hh | 3 |
3 files changed, 14 insertions, 21 deletions
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 2fff0e31..756f3f55 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -362,13 +362,6 @@ QPDFObjectHandle::replaceStreamData(PointerHolder<Buffer> data, data, filter, decode_parms); } -void -QPDFObjectHandle::replaceStreamData(PointerHolder<StreamDataHandler> dh) -{ - assertType("Stream", isStream()); - dynamic_cast<QPDF_Stream*>(obj.getPointer())->replaceStreamData(dh); -} - int QPDFObjectHandle::getObjectID() const { diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index 500dfb10..5e53b2ae 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -319,10 +319,20 @@ QPDF_Stream::pipeStreamData(Pipeline* pipeline, bool filter, } } - // XXX handle stream_data and stream_data_handler - QPDF::Pipe::pipeStreamData(this->qpdf, this->objid, this->generation, - this->offset, this->length, - this->stream_dict, pipeline); + if (this->stream_data.getPointer()) + { + QTC::TC("qpdf", "QPDF_Stream pipe replaced stream data"); + Buffer& b = *(this->stream_data.getPointer()); + pipeline->write(b.getBuffer(), b.getSize()); + pipeline->finish(); + } + else + { + QTC::TC("qpdf", "QPDF_Stream pipe original stream data"); + QPDF::Pipe::pipeStreamData(this->qpdf, this->objid, this->generation, + this->offset, this->length, + this->stream_dict, pipeline); + } return filter; } @@ -339,10 +349,3 @@ QPDF_Stream::replaceStreamData(PointerHolder<Buffer> data, QPDFObjectHandle::newInteger( data.getPointer()->getSize())); } - -void -QPDF_Stream::replaceStreamData( - PointerHolder<QPDFObjectHandle::StreamDataHandler> dh) -{ - this->stream_data_handler = dh; -} diff --git a/libqpdf/qpdf/QPDF_Stream.hh b/libqpdf/qpdf/QPDF_Stream.hh index cc7cbf0a..86a585c9 100644 --- a/libqpdf/qpdf/QPDF_Stream.hh +++ b/libqpdf/qpdf/QPDF_Stream.hh @@ -25,8 +25,6 @@ class QPDF_Stream: public QPDFObject void replaceStreamData(PointerHolder<Buffer> data, QPDFObjectHandle filter, QPDFObjectHandle decode_parms); - void replaceStreamData( - PointerHolder<QPDFObjectHandle::StreamDataHandler> dh); private: bool filterable(std::vector<std::string>& filters, @@ -38,7 +36,6 @@ class QPDF_Stream: public QPDFObject QPDFObjectHandle stream_dict; off_t offset; int length; - PointerHolder<QPDFObjectHandle::StreamDataHandler> stream_data_handler; PointerHolder<Buffer> stream_data; }; |