Commit a944fe359650d9a5d0ed8dc58378992b3415d71f

Authored by m-holger
1 parent 9aef1589

Refactor `QPDFWriter`: move `write` and `getWrittenXRefTable` to `QPDFWriter::Me…

…mbers`, update related logic, and clean up obsolete code.
include/qpdf/QPDFWriter.hh
@@ -20,9 +20,9 @@ @@ -20,9 +20,9 @@
20 #ifndef QPDFWRITER_HH 20 #ifndef QPDFWRITER_HH
21 #define QPDFWRITER_HH 21 #define QPDFWRITER_HH
22 22
  23 +#include <qpdf/Constants.h>
23 #include <qpdf/DLL.h> 24 #include <qpdf/DLL.h>
24 #include <qpdf/Types.h> 25 #include <qpdf/Types.h>
25 -#include <qpdf/Constants.h>  
26 26
27 #include <qpdf/Buffer.hh> 27 #include <qpdf/Buffer.hh>
28 #include <qpdf/PDFVersion.hh> 28 #include <qpdf/PDFVersion.hh>
libqpdf/QPDFWriter.cc
@@ -293,6 +293,8 @@ class QPDFWriter::Members @@ -293,6 +293,8 @@ class QPDFWriter::Members
293 delete output_buffer; 293 delete output_buffer;
294 } 294 }
295 295
  296 + void write();
  297 + std::map<QPDFObjGen, QPDFXRefEntry> getWrittenXRefTable();
296 void setMinimumPDFVersion(std::string const& version, int extension_level); 298 void setMinimumPDFVersion(std::string const& version, int extension_level);
297 void copyEncryptionParameters(QPDF&); 299 void copyEncryptionParameters(QPDF&);
298 void doWriteSetup(); 300 void doWriteSetup();
@@ -2366,30 +2368,36 @@ QPDFWriter::Members::doWriteSetup() @@ -2366,30 +2368,36 @@ QPDFWriter::Members::doWriteSetup()
2366 void 2368 void
2367 QPDFWriter::write() 2369 QPDFWriter::write()
2368 { 2370 {
2369 - m->doWriteSetup(); 2371 + m->write();
  2372 +}
  2373 +
  2374 +void
  2375 +QPDFWriter::Members::write()
  2376 +{
  2377 + doWriteSetup();
2370 2378
2371 // Set up progress reporting. For linearized files, we write two passes. events_expected is an 2379 // Set up progress reporting. For linearized files, we write two passes. events_expected is an
2372 // approximation, but it's good enough for progress reporting, which is mostly a guess anyway. 2380 // approximation, but it's good enough for progress reporting, which is mostly a guess anyway.
2373 - m->events_expected = QIntC::to_int(m->pdf.getObjectCount() * (m->linearized ? 2 : 1)); 2381 + events_expected = QIntC::to_int(pdf.getObjectCount() * (linearized ? 2 : 1));
2374 2382
2375 - m->prepareFileForWrite(); 2383 + prepareFileForWrite();
2376 2384
2377 - if (m->linearized) {  
2378 - m->writeLinearized(); 2385 + if (linearized) {
  2386 + writeLinearized();
2379 } else { 2387 } else {
2380 - m->writeStandard(); 2388 + writeStandard();
2381 } 2389 }
2382 2390
2383 - m->pipeline->finish();  
2384 - if (m->close_file) {  
2385 - fclose(m->file); 2391 + pipeline->finish();
  2392 + if (close_file) {
  2393 + fclose(file);
2386 } 2394 }
2387 - m->file = nullptr;  
2388 - if (m->buffer_pipeline) {  
2389 - m->output_buffer = m->buffer_pipeline->getBuffer();  
2390 - m->buffer_pipeline = nullptr; 2395 + file = nullptr;
  2396 + if (buffer_pipeline) {
  2397 + output_buffer = buffer_pipeline->getBuffer();
  2398 + buffer_pipeline = nullptr;
2391 } 2399 }
2392 - m->indicateProgress(false, true); 2400 + indicateProgress(false, true);
2393 } 2401 }
2394 2402
2395 QPDFObjGen 2403 QPDFObjGen
@@ -2401,10 +2409,16 @@ QPDFWriter::getRenumberedObjGen(QPDFObjGen og) @@ -2401,10 +2409,16 @@ QPDFWriter::getRenumberedObjGen(QPDFObjGen og)
2401 std::map<QPDFObjGen, QPDFXRefEntry> 2409 std::map<QPDFObjGen, QPDFXRefEntry>
2402 QPDFWriter::getWrittenXRefTable() 2410 QPDFWriter::getWrittenXRefTable()
2403 { 2411 {
  2412 + return m->getWrittenXRefTable();
  2413 +}
  2414 +
  2415 +std::map<QPDFObjGen, QPDFXRefEntry>
  2416 +QPDFWriter::Members::getWrittenXRefTable()
  2417 +{
2404 std::map<QPDFObjGen, QPDFXRefEntry> result; 2418 std::map<QPDFObjGen, QPDFXRefEntry> result;
2405 2419
2406 auto it = result.begin(); 2420 auto it = result.begin();
2407 - m->new_obj.forEach([&it, &result](auto id, auto const& item) -> void { 2421 + new_obj.forEach([&it, &result](auto id, auto const& item) -> void {
2408 if (item.xref.getType() != 0) { 2422 if (item.xref.getType() != 0) {
2409 it = result.emplace_hint(it, QPDFObjGen(id, 0), item.xref); 2423 it = result.emplace_hint(it, QPDFObjGen(id, 0), item.xref);
2410 } 2424 }