From a944fe359650d9a5d0ed8dc58378992b3415d71f Mon Sep 17 00:00:00 2001 From: m-holger Date: Fri, 12 Sep 2025 15:17:54 +0100 Subject: [PATCH] Refactor `QPDFWriter`: move `write` and `getWrittenXRefTable` to `QPDFWriter::Members`, update related logic, and clean up obsolete code. --- include/qpdf/QPDFWriter.hh | 2 +- libqpdf/QPDFWriter.cc | 44 +++++++++++++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/include/qpdf/QPDFWriter.hh b/include/qpdf/QPDFWriter.hh index 2e90b4e..c393f0d 100644 --- a/include/qpdf/QPDFWriter.hh +++ b/include/qpdf/QPDFWriter.hh @@ -20,9 +20,9 @@ #ifndef QPDFWRITER_HH #define QPDFWRITER_HH +#include #include #include -#include #include #include diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 43f7cde..e5f72c6 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -293,6 +293,8 @@ class QPDFWriter::Members delete output_buffer; } + void write(); + std::map getWrittenXRefTable(); void setMinimumPDFVersion(std::string const& version, int extension_level); void copyEncryptionParameters(QPDF&); void doWriteSetup(); @@ -2366,30 +2368,36 @@ QPDFWriter::Members::doWriteSetup() void QPDFWriter::write() { - m->doWriteSetup(); + m->write(); +} + +void +QPDFWriter::Members::write() +{ + doWriteSetup(); // Set up progress reporting. For linearized files, we write two passes. events_expected is an // approximation, but it's good enough for progress reporting, which is mostly a guess anyway. - m->events_expected = QIntC::to_int(m->pdf.getObjectCount() * (m->linearized ? 2 : 1)); + events_expected = QIntC::to_int(pdf.getObjectCount() * (linearized ? 2 : 1)); - m->prepareFileForWrite(); + prepareFileForWrite(); - if (m->linearized) { - m->writeLinearized(); + if (linearized) { + writeLinearized(); } else { - m->writeStandard(); + writeStandard(); } - m->pipeline->finish(); - if (m->close_file) { - fclose(m->file); + pipeline->finish(); + if (close_file) { + fclose(file); } - m->file = nullptr; - if (m->buffer_pipeline) { - m->output_buffer = m->buffer_pipeline->getBuffer(); - m->buffer_pipeline = nullptr; + file = nullptr; + if (buffer_pipeline) { + output_buffer = buffer_pipeline->getBuffer(); + buffer_pipeline = nullptr; } - m->indicateProgress(false, true); + indicateProgress(false, true); } QPDFObjGen @@ -2401,10 +2409,16 @@ QPDFWriter::getRenumberedObjGen(QPDFObjGen og) std::map QPDFWriter::getWrittenXRefTable() { + return m->getWrittenXRefTable(); +} + +std::map +QPDFWriter::Members::getWrittenXRefTable() +{ std::map result; auto it = result.begin(); - m->new_obj.forEach([&it, &result](auto id, auto const& item) -> void { + new_obj.forEach([&it, &result](auto id, auto const& item) -> void { if (item.xref.getType() != 0) { it = result.emplace_hint(it, QPDFObjGen(id, 0), item.xref); } -- libgit2 0.21.4