From 87412eb05be3148e812310128f361f79922baad8 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sat, 18 Jun 2022 20:44:44 -0400 Subject: Add QPDFJob::registerProgressReporter --- libqpdf/QPDFJob.cc | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'libqpdf/QPDFJob.cc') diff --git a/libqpdf/QPDFJob.cc b/libqpdf/QPDFJob.cc index 606a612a..5631df49 100644 --- a/libqpdf/QPDFJob.cc +++ b/libqpdf/QPDFJob.cc @@ -323,6 +323,7 @@ QPDFJob::Members::Members() : decrypt(false), split_pages(0), progress(false), + progress_handler(nullptr), suppress_warnings(false), warnings_exit_zero(false), copy_encryption(false), @@ -463,6 +464,11 @@ QPDFJob::setOutputStreams(std::ostream* out, std::ostream* err) this->m->log->setOutputStreams(out, err); } +void +QPDFJob::registerProgressReporter(std::function handler) { + this->m->progress_handler = handler; +} + void QPDFJob::doIfVerbose( std::function fn) @@ -3146,16 +3152,23 @@ QPDFJob::setWriterOptions(QPDF& pdf, QPDFWriter& w) w.forcePDFVersion(version, extension_level); } if (m->progress) { - char const* outfilename = this->m->outfilename - ? this->m->outfilename.get() - : "standard output"; - w.registerProgressReporter( - std::shared_ptr( - // line-break - new ProgressReporter( - *this->m->log->getInfo(), - this->m->message_prefix, - outfilename))); + if (this->m->progress_handler) { + w.registerProgressReporter( + std::shared_ptr( + new QPDFWriter::FunctionProgressReporter( + this->m->progress_handler))); + } else { + char const* outfilename = this->m->outfilename + ? this->m->outfilename.get() + : "standard output"; + w.registerProgressReporter( + std::shared_ptr( + // line-break + new ProgressReporter( + *this->m->log->getInfo(), + this->m->message_prefix, + outfilename))); + } } } -- cgit v1.2.3-54-g00ecf