diff options
author | Tobias Hoffmann <thobi@worker> | 2012-07-25 03:01:57 +0200 |
---|---|---|
committer | Tobias Hoffmann <thobi@worker> | 2012-07-25 03:02:46 +0200 |
commit | 9c00874e7786fa38e15e9a4ddf9767b63e88386d (patch) | |
tree | 2616a3bf3b21be29dab08224064c5015b6827830 | |
parent | b04fb5cf5844852b4642bd486f14c08c78c16345 (diff) | |
download | qpdf-9c00874e7786fa38e15e9a4ddf9767b63e88386d.tar.zst |
added QPDFObjectHandle::replaceStreamData(std::string data).
-rw-r--r-- | include/qpdf/QPDFObjectHandle.hh | 9 | ||||
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 20 |
2 files changed, 25 insertions, 4 deletions
diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index a1819d99..2c24f481 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -363,6 +363,15 @@ class QPDFObjectHandle QPDFObjectHandle const& filter, QPDFObjectHandle const& decode_parms); + // Replace the stream's stream data with the given string. + // This method will create a copy of the data rather than using + // the user-provided buffer as in the PointerHolder<Buffer> version + // of replaceStreamData. + QPDF_DLL + void replaceStreamData(std::string const& data, + QPDFObjectHandle const& filter, + QPDFObjectHandle const& decode_parms); + // As above, replace this stream's stream data. Instead of // directly providing a buffer with the stream data, call the // given provider's provideStreamData method. See comments on the diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 6bb182e8..54897b83 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -442,6 +442,19 @@ QPDFObjectHandle::replaceStreamData(PointerHolder<Buffer> data, } void +QPDFObjectHandle::replaceStreamData(std::string const& data, + QPDFObjectHandle const& filter, + QPDFObjectHandle const& decode_parms) +{ + assertStream(); + PointerHolder<Buffer> b = new Buffer(data.length()); + unsigned char* bp = b->getBuffer(); + memcpy(bp, (char*)data.c_str(), data.length()); + dynamic_cast<QPDF_Stream*>(obj.getPointer())->replaceStreamData( + b, filter, decode_parms); +} + +void QPDFObjectHandle::replaceStreamData(PointerHolder<StreamDataProvider> provider, QPDFObjectHandle const& filter, QPDFObjectHandle const& decode_parms) @@ -978,10 +991,9 @@ QPDFObjectHandle QPDFObjectHandle::newStream(QPDF* qpdf, std::string const& data) { QTC::TC("qpdf", "QPDFObjectHandle newStream with string"); - PointerHolder<Buffer> b = new Buffer(data.length()); - unsigned char* bp = b->getBuffer(); - memcpy(bp, (char*)data.c_str(), data.length()); - return QPDFObjectHandle::newStream(qpdf, b); + QPDFObjectHandle result = newStream(qpdf); + result.replaceStreamData(data, newNull(), newNull()); + return result; } QPDFObjectHandle |