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
libqpdf/QPDFWriter.cc
| ... | ... | @@ -293,6 +293,8 @@ class QPDFWriter::Members |
| 293 | 293 | delete output_buffer; |
| 294 | 294 | } |
| 295 | 295 | |
| 296 | + void write(); | |
| 297 | + std::map<QPDFObjGen, QPDFXRefEntry> getWrittenXRefTable(); | |
| 296 | 298 | void setMinimumPDFVersion(std::string const& version, int extension_level); |
| 297 | 299 | void copyEncryptionParameters(QPDF&); |
| 298 | 300 | void doWriteSetup(); |
| ... | ... | @@ -2366,30 +2368,36 @@ QPDFWriter::Members::doWriteSetup() |
| 2366 | 2368 | void |
| 2367 | 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 | 2379 | // Set up progress reporting. For linearized files, we write two passes. events_expected is an |
| 2372 | 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 | 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 | 2403 | QPDFObjGen |
| ... | ... | @@ -2401,10 +2409,16 @@ QPDFWriter::getRenumberedObjGen(QPDFObjGen og) |
| 2401 | 2409 | std::map<QPDFObjGen, QPDFXRefEntry> |
| 2402 | 2410 | QPDFWriter::getWrittenXRefTable() |
| 2403 | 2411 | { |
| 2412 | + return m->getWrittenXRefTable(); | |
| 2413 | +} | |
| 2414 | + | |
| 2415 | +std::map<QPDFObjGen, QPDFXRefEntry> | |
| 2416 | +QPDFWriter::Members::getWrittenXRefTable() | |
| 2417 | +{ | |
| 2404 | 2418 | std::map<QPDFObjGen, QPDFXRefEntry> result; |
| 2405 | 2419 | |
| 2406 | 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 | 2422 | if (item.xref.getType() != 0) { |
| 2409 | 2423 | it = result.emplace_hint(it, QPDFObjGen(id, 0), item.xref); |
| 2410 | 2424 | } | ... | ... |