Commit bd197adf8c23b384bd245e51d2327a62fe68bada
1 parent
2bd0657d
Refactor `QPDF::getAllPages` usage: replace with `Pages::all` across `QPDFWriter`.
Showing
2 changed files
with
16 additions
and
17 deletions
libqpdf/QPDFWriter.cc
| @@ -2127,9 +2127,8 @@ void | @@ -2127,9 +2127,8 @@ void | ||
| 2127 | QPDFWriter::Members::initializeSpecialStreams() | 2127 | QPDFWriter::Members::initializeSpecialStreams() |
| 2128 | { | 2128 | { |
| 2129 | // Mark all page content streams in case we are filtering or normalizing. | 2129 | // Mark all page content streams in case we are filtering or normalizing. |
| 2130 | - std::vector<QPDFObjectHandle> pages = qpdf.getAllPages(); | ||
| 2131 | int num = 0; | 2130 | int num = 0; |
| 2132 | - for (auto& page: pages) { | 2131 | + for (auto& page: pages.all()) { |
| 2133 | page_object_to_seq[page.getObjGen()] = ++num; | 2132 | page_object_to_seq[page.getObjGen()] = ++num; |
| 2134 | QPDFObjectHandle contents = page.getKey("/Contents"); | 2133 | QPDFObjectHandle contents = page.getKey("/Contents"); |
| 2135 | std::vector<QPDFObjGen> contents_objects; | 2134 | std::vector<QPDFObjGen> contents_objects; |
| @@ -2381,7 +2380,7 @@ QPDFWriter::Members::doWriteSetup() | @@ -2381,7 +2380,7 @@ QPDFWriter::Members::doWriteSetup() | ||
| 2381 | if (!obj.streams_empty) { | 2380 | if (!obj.streams_empty) { |
| 2382 | if (linearized) { | 2381 | if (linearized) { |
| 2383 | // Page dictionaries are not allowed to be compressed objects. | 2382 | // Page dictionaries are not allowed to be compressed objects. |
| 2384 | - for (auto& page: qpdf.getAllPages()) { | 2383 | + for (auto& page: qpdf.doc().pages().all()) { |
| 2385 | if (obj[page].object_stream > 0) { | 2384 | if (obj[page].object_stream > 0) { |
| 2386 | obj[page].object_stream = 0; | 2385 | obj[page].object_stream = 0; |
| 2387 | } | 2386 | } |
| @@ -2911,14 +2910,11 @@ QPDFWriter::Members::writeLinearized() | @@ -2911,14 +2910,11 @@ QPDFWriter::Members::writeLinearized() | ||
| 2911 | openObject(lindict_id); | 2910 | openObject(lindict_id); |
| 2912 | write("<<"); | 2911 | write("<<"); |
| 2913 | if (pass == 2) { | 2912 | if (pass == 2) { |
| 2914 | - std::vector<QPDFObjectHandle> const& pages = qpdf.getAllPages(); | ||
| 2915 | - int first_page_object = obj[pages.at(0)].renumber; | ||
| 2916 | - | ||
| 2917 | write(" /Linearized 1 /L ").write(file_size + hint_length); | 2913 | write(" /Linearized 1 /L ").write(file_size + hint_length); |
| 2918 | // Implementation note 121 states that a space is mandatory after this open bracket. | 2914 | // Implementation note 121 states that a space is mandatory after this open bracket. |
| 2919 | write(" /H [ ").write(new_obj[hint_id].xref.getOffset()).write(" "); | 2915 | write(" /H [ ").write(new_obj[hint_id].xref.getOffset()).write(" "); |
| 2920 | write(hint_length); | 2916 | write(hint_length); |
| 2921 | - write(" ] /O ").write(first_page_object); | 2917 | + write(" ] /O ").write(obj[pages.all().at(0)].renumber); |
| 2922 | write(" /E ").write(part6_end_offset + hint_length); | 2918 | write(" /E ").write(part6_end_offset + hint_length); |
| 2923 | write(" /N ").write(pages.size()); | 2919 | write(" /N ").write(pages.size()); |
| 2924 | write(" /T ").write(space_before_zero + hint_length); | 2920 | write(" /T ").write(space_before_zero + hint_length); |
| @@ -3137,17 +3133,15 @@ QPDFWriter::Members::enqueueObjectsPCLm() | @@ -3137,17 +3133,15 @@ QPDFWriter::Members::enqueueObjectsPCLm() | ||
| 3137 | std::string image_transform_content = "q /image Do Q\n"; | 3133 | std::string image_transform_content = "q /image Do Q\n"; |
| 3138 | 3134 | ||
| 3139 | // enqueue all pages first | 3135 | // enqueue all pages first |
| 3140 | - std::vector<QPDFObjectHandle> all = qpdf.getAllPages(); | ||
| 3141 | - for (auto& page: all) { | 3136 | + for (auto& page: pages.all()) { |
| 3142 | // enqueue page | 3137 | // enqueue page |
| 3143 | enqueueObject(page); | 3138 | enqueueObject(page); |
| 3144 | 3139 | ||
| 3145 | // enqueue page contents stream | 3140 | // enqueue page contents stream |
| 3146 | - enqueueObject(page.getKey("/Contents")); | 3141 | + enqueueObject(page["/Contents"]); |
| 3147 | 3142 | ||
| 3148 | // enqueue all the strips for each page | 3143 | // enqueue all the strips for each page |
| 3149 | - QPDFObjectHandle strips = page.getKey("/Resources").getKey("/XObject"); | ||
| 3150 | - for (auto& image: strips.as_dictionary()) { | 3144 | + for (auto& image: Dictionary(page["/Resources"]["/XObject"])) { |
| 3151 | if (!image.second.null()) { | 3145 | if (!image.second.null()) { |
| 3152 | enqueueObject(image.second); | 3146 | enqueueObject(image.second); |
| 3153 | enqueueObject(QPDFObjectHandle::newStream(&qpdf, image_transform_content)); | 3147 | enqueueObject(QPDFObjectHandle::newStream(&qpdf, image_transform_content)); |
libqpdf/qpdf/QPDF_private.hh
| @@ -316,11 +316,7 @@ class QPDF::Doc | @@ -316,11 +316,7 @@ class QPDF::Doc | ||
| 316 | Common& operator=(Common&&) = delete; | 316 | Common& operator=(Common&&) = delete; |
| 317 | ~Common() = default; | 317 | ~Common() = default; |
| 318 | 318 | ||
| 319 | - Common(QPDF& qpdf, QPDF::Members* m) : | ||
| 320 | - qpdf(qpdf), | ||
| 321 | - m(m) | ||
| 322 | - { | ||
| 323 | - } | 319 | + inline Common(QPDF& qpdf, QPDF::Members* m); |
| 324 | 320 | ||
| 325 | void stopOnError(std::string const& message); | 321 | void stopOnError(std::string const& message); |
| 326 | void warn(QPDFExc const& e); | 322 | void warn(QPDFExc const& e); |
| @@ -355,6 +351,8 @@ class QPDF::Doc | @@ -355,6 +351,8 @@ class QPDF::Doc | ||
| 355 | protected: | 351 | protected: |
| 356 | QPDF& qpdf; | 352 | QPDF& qpdf; |
| 357 | QPDF::Members* m; | 353 | QPDF::Members* m; |
| 354 | + | ||
| 355 | + QPDF::Doc::Pages& pages; | ||
| 358 | }; | 356 | }; |
| 359 | 357 | ||
| 360 | Doc() = delete; | 358 | Doc() = delete; |
| @@ -1001,6 +999,13 @@ class QPDF::Doc::Resolver | @@ -1001,6 +999,13 @@ class QPDF::Doc::Resolver | ||
| 1001 | } | 999 | } |
| 1002 | }; | 1000 | }; |
| 1003 | 1001 | ||
| 1002 | +inline QPDF::Doc::Common::Common(QPDF& qpdf, QPDF::Members* m) : | ||
| 1003 | + qpdf(qpdf), | ||
| 1004 | + m(m), | ||
| 1005 | + pages(m->pages) | ||
| 1006 | +{ | ||
| 1007 | +} | ||
| 1008 | + | ||
| 1004 | inline QPDF::Doc::Linearization& | 1009 | inline QPDF::Doc::Linearization& |
| 1005 | QPDF::Doc::linearization() | 1010 | QPDF::Doc::linearization() |
| 1006 | { | 1011 | { |