diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-06-19 02:44:44 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-06-19 14:46:58 +0200 |
commit | 87412eb05be3148e812310128f361f79922baad8 (patch) | |
tree | e8f58ce2ac059c7fcc912df62226885574d6a372 /libqpdf/QPDFJob.cc | |
parent | 3a7ee7e93847d41cae414ff77cc75fd6394751ef (diff) | |
download | qpdf-87412eb05be3148e812310128f361f79922baad8.tar.zst |
Add QPDFJob::registerProgressReporter
Diffstat (limited to 'libqpdf/QPDFJob.cc')
-rw-r--r-- | libqpdf/QPDFJob.cc | 33 |
1 files changed, 23 insertions, 10 deletions
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), @@ -464,6 +465,11 @@ QPDFJob::setOutputStreams(std::ostream* out, std::ostream* err) } void +QPDFJob::registerProgressReporter(std::function<void(int)> handler) { + this->m->progress_handler = handler; +} + +void QPDFJob::doIfVerbose( std::function<void(Pipeline&, std::string const& prefix)> 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<QPDFWriter::ProgressReporter>( - // line-break - new ProgressReporter( - *this->m->log->getInfo(), - this->m->message_prefix, - outfilename))); + if (this->m->progress_handler) { + w.registerProgressReporter( + std::shared_ptr<QPDFWriter::ProgressReporter>( + 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<QPDFWriter::ProgressReporter>( + // line-break + new ProgressReporter( + *this->m->log->getInfo(), + this->m->message_prefix, + outfilename))); + } } } |