diff options
author | Jay Berkenbilt <ejb@ql.org> | 2010-08-05 22:20:52 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2010-08-05 22:20:52 +0200 |
commit | 6f2bd7eb3a64ae6ffbdf9ae256d822056ddcb7b0 (patch) | |
tree | b2853762f4a564e1110ddf37f4821ea02d40a367 /libqpdf/QPDFObjectHandle.cc | |
parent | 11df7809af7131af139be2e76f2db87128700939 (diff) | |
download | qpdf-6f2bd7eb3a64ae6ffbdf9ae256d822056ddcb7b0.tar.zst |
newStream
git-svn-id: svn+q:///qpdf/trunk@991 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r-- | libqpdf/QPDFObjectHandle.cc | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index 649ce3f0..19b4f94e 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -561,6 +561,30 @@ QPDFObjectHandle::newStream(QPDF* qpdf, int objid, int generation, stream_dict, offset, length)); } +QPDFObjectHandle +QPDFObjectHandle::newStream(QPDF* qpdf) +{ + QTC::TC("qpdf", "QPDFObjectHandle newStream"); + std::map<std::string, QPDFObjectHandle> keys; + QPDFObjectHandle stream_dict = newDictionary(keys); + QPDFObjectHandle result = qpdf->makeIndirectObject( + QPDFObjectHandle( + new QPDF_Stream(qpdf, 0, 0, stream_dict, 0, 0))); + result.dereference(); + QPDF_Stream* stream = dynamic_cast<QPDF_Stream*>(result.obj.getPointer()); + stream->setObjGen(result.getObjectID(), result.getGeneration()); + return result; +} + +QPDFObjectHandle +QPDFObjectHandle::newStream(QPDF* qpdf, PointerHolder<Buffer> data) +{ + QTC::TC("qpdf", "QPDFObjectHandle newStream with data"); + QPDFObjectHandle result = newStream(qpdf); + result.replaceStreamData(data, newNull(), newNull()); + return result; +} + void QPDFObjectHandle::makeDirectInternal(std::set<int>& visited) { @@ -649,7 +673,7 @@ QPDFObjectHandle::makeDirectInternal(std::set<int>& visited) } else { - throw std::logic_error("QPDFObjectHandle::makeIndirect: " + throw std::logic_error("QPDFObjectHandle::makeDirectInternal: " "unknown object type"); } |