Commit a944fe359650d9a5d0ed8dc58378992b3415d71f
1 parent
9aef1589
Refactor `QPDFWriter`: move `write` and `getWrittenXRefTable` to `QPDFWriter::Me…
…mbers`, update related logic, and clean up obsolete code.
Showing
2 changed files
with
30 additions
and
16 deletions
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 | } |