diff options
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/qpdf-c.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libqpdf/qpdf-c.cc b/libqpdf/qpdf-c.cc index d3ada5fd..0d37f732 100644 --- a/libqpdf/qpdf-c.cc +++ b/libqpdf/qpdf-c.cc @@ -57,6 +57,30 @@ _qpdf_data::~_qpdf_data() { } +class ProgressReporter: public QPDFWriter::ProgressReporter +{ + public: + ProgressReporter(void (*handler)(int, void*), void* data); + virtual ~ProgressReporter() = default; + virtual void reportProgress(int); + + private: + void (*handler)(int, void*); + void* data; +}; + +ProgressReporter::ProgressReporter(void (*handler)(int, void*), void* data) : + handler(handler), + data(data) +{ +} + +void +ProgressReporter::reportProgress(int progress) +{ + this->handler(progress, this->data); +} + // must set qpdf->filename and qpdf->password static void call_read(qpdf_data qpdf) { @@ -752,6 +776,15 @@ void qpdf_force_pdf_version_and_extension( qpdf->qpdf_writer->forcePDFVersion(version, extension_level); } +void qpdf_register_progress_reporter( + qpdf_data qpdf, + void (*report_progress)(int percent, void* data), + void* data) +{ + qpdf->qpdf_writer->registerProgressReporter( + new ProgressReporter(report_progress, data)); +} + QPDF_ERROR_CODE qpdf_write(qpdf_data qpdf) { QPDF_ERROR_CODE status = QPDF_SUCCESS; |