diff options
author | Jay Berkenbilt <ejb@ql.org> | 2018-06-22 21:22:29 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2018-06-22 22:14:54 +0200 |
commit | a433ed24f978d6e0ae1b87e997dcb511b001b12e (patch) | |
tree | 589cedfb96e86f0ca1240daaccc791fce42c55bb /include | |
parent | 2a82f6e1e05b5791c264efd8f70a20aeadca7501 (diff) | |
download | qpdf-a433ed24f978d6e0ae1b87e997dcb511b001b12e.tar.zst |
Add progress reporting for QPDFWriter (fixes #200)
Diffstat (limited to 'include')
-rw-r--r-- | include/qpdf/QPDFWriter.hh | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/include/qpdf/QPDFWriter.hh b/include/qpdf/QPDFWriter.hh index cdd63e47..1802078a 100644 --- a/include/qpdf/QPDFWriter.hh +++ b/include/qpdf/QPDFWriter.hh @@ -76,6 +76,19 @@ class QPDFWriter QPDF_DLL ~QPDFWriter(); + class ProgressReporter + { + public: + virtual ~ProgressReporter() + { + } + + // This method is called with a value from 0 to 100 to + // indicate approximate progress through the write process. + // See registerProgressReporter. + virtual void reportProgress(int) = 0; + }; + // Setting Output. Output may be set only one time. If you don't // use the filename version of the QPDFWriter constructor, you // must call exactly one of these methods. @@ -386,6 +399,11 @@ class QPDFWriter QPDF_DLL void setPCLm(bool); + // If you want to be notified of progress, derive a class from + // ProgressReporter and override the reportProgress method. + QPDF_DLL + void registerProgressReporter(PointerHolder<ProgressReporter>); + QPDF_DLL void write(); @@ -450,6 +468,7 @@ class QPDFWriter void prepareFileForWrite(); void enqueueObjectsStandard(); void enqueueObjectsPCLm(); + void indicateProgress(bool decrement, bool finished); void writeStandard(); void writeLinearized(); void enqueuePart(std::vector<QPDFObjectHandle>& part); @@ -583,6 +602,12 @@ class QPDFWriter std::string lin_pass1_filename; std::map<int, int> obj_renumber_no_gen; std::map<int, int> object_to_object_stream_no_gen; + + // For progress reporting + PointerHolder<ProgressReporter> progress_reporter; + int events_expected; + int events_seen; + int next_progress_report; }; // Keep all member variables inside the Members object, which we |