diff options
author | m-holger <m-holger@kubitscheck.org> | 2022-09-26 19:27:25 +0200 |
---|---|---|
committer | Jay Berkenbilt <jberkenbilt@users.noreply.github.com> | 2022-11-19 20:10:42 +0100 |
commit | 9ebabd19538512b6515696b164a17b90060a75c3 (patch) | |
tree | b747cdbee60ce12d94b1326d3e970adc5f2abf77 /libqpdf | |
parent | 0a3c533186e3b4957fbf318e9507fe52d3f71cbd (diff) | |
download | qpdf-9ebabd19538512b6515696b164a17b90060a75c3.tar.zst |
Add new methods QPDF::newStream
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/QPDF.cc | 25 | ||||
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 23 |
2 files changed, 36 insertions, 12 deletions
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index 50e08804..fde819a5 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -2002,6 +2002,31 @@ QPDF::makeIndirectObject(QPDFObjectHandle oh) } QPDFObjectHandle +QPDF::newStream() +{ + return makeIndirectObject(QPDF_Stream::create( + this, nextObjGen(), QPDFObjectHandle::newDictionary(), 0, 0)); +} + +QPDFObjectHandle +QPDF::newStream(std::shared_ptr<Buffer> data) +{ + auto result = newStream(); + result.replaceStreamData( + data, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull()); + return result; +} + +QPDFObjectHandle +QPDF::newStream(std::string const& data) +{ + auto result = newStream(); + result.replaceStreamData( + data, QPDFObjectHandle::newNull(), QPDFObjectHandle::newNull()); + return result; +} + +QPDFObjectHandle QPDF::reserveObjectIfNotExists(QPDFObjGen const& og) { if (!isCached(og) && m->xref_table.count(og) == 0) { diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 6aca51f0..931960ed 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -2165,30 +2165,29 @@ QPDFObjectHandle::newStream(QPDF* qpdf) "attempt to create stream in null qpdf object"); } QTC::TC("qpdf", "QPDFObjectHandle newStream"); - QPDFObjectHandle stream_dict = newDictionary(); - QPDFObjectHandle result = qpdf->makeIndirectObject(QPDFObjectHandle( - QPDF_Stream::create(qpdf, QPDFObjGen(), stream_dict, 0, 0))); - auto stream = result.asStream(); - stream->setObjGen(result.getObjGen()); - return result; + return qpdf->newStream(); } QPDFObjectHandle QPDFObjectHandle::newStream(QPDF* qpdf, std::shared_ptr<Buffer> data) { + if (qpdf == nullptr) { + throw std::runtime_error( + "attempt to create stream in null qpdf object"); + } QTC::TC("qpdf", "QPDFObjectHandle newStream with data"); - QPDFObjectHandle result = newStream(qpdf); - result.replaceStreamData(data, newNull(), newNull()); - return result; + return qpdf->newStream(data); } QPDFObjectHandle QPDFObjectHandle::newStream(QPDF* qpdf, std::string const& data) { + if (qpdf == nullptr) { + throw std::runtime_error( + "attempt to create stream in null qpdf object"); + } QTC::TC("qpdf", "QPDFObjectHandle newStream with string"); - QPDFObjectHandle result = newStream(qpdf); - result.replaceStreamData(data, newNull(), newNull()); - return result; + return qpdf->newStream(data); } QPDFObjectHandle |