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 | 2127 | QPDFWriter::Members::initializeSpecialStreams() |
| 2128 | 2128 | { |
| 2129 | 2129 | // Mark all page content streams in case we are filtering or normalizing. |
| 2130 | - std::vector<QPDFObjectHandle> pages = qpdf.getAllPages(); | |
| 2131 | 2130 | int num = 0; |
| 2132 | - for (auto& page: pages) { | |
| 2131 | + for (auto& page: pages.all()) { | |
| 2133 | 2132 | page_object_to_seq[page.getObjGen()] = ++num; |
| 2134 | 2133 | QPDFObjectHandle contents = page.getKey("/Contents"); |
| 2135 | 2134 | std::vector<QPDFObjGen> contents_objects; |
| ... | ... | @@ -2381,7 +2380,7 @@ QPDFWriter::Members::doWriteSetup() |
| 2381 | 2380 | if (!obj.streams_empty) { |
| 2382 | 2381 | if (linearized) { |
| 2383 | 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 | 2384 | if (obj[page].object_stream > 0) { |
| 2386 | 2385 | obj[page].object_stream = 0; |
| 2387 | 2386 | } |
| ... | ... | @@ -2911,14 +2910,11 @@ QPDFWriter::Members::writeLinearized() |
| 2911 | 2910 | openObject(lindict_id); |
| 2912 | 2911 | write("<<"); |
| 2913 | 2912 | if (pass == 2) { |
| 2914 | - std::vector<QPDFObjectHandle> const& pages = qpdf.getAllPages(); | |
| 2915 | - int first_page_object = obj[pages.at(0)].renumber; | |
| 2916 | - | |
| 2917 | 2913 | write(" /Linearized 1 /L ").write(file_size + hint_length); |
| 2918 | 2914 | // Implementation note 121 states that a space is mandatory after this open bracket. |
| 2919 | 2915 | write(" /H [ ").write(new_obj[hint_id].xref.getOffset()).write(" "); |
| 2920 | 2916 | write(hint_length); |
| 2921 | - write(" ] /O ").write(first_page_object); | |
| 2917 | + write(" ] /O ").write(obj[pages.all().at(0)].renumber); | |
| 2922 | 2918 | write(" /E ").write(part6_end_offset + hint_length); |
| 2923 | 2919 | write(" /N ").write(pages.size()); |
| 2924 | 2920 | write(" /T ").write(space_before_zero + hint_length); |
| ... | ... | @@ -3137,17 +3133,15 @@ QPDFWriter::Members::enqueueObjectsPCLm() |
| 3137 | 3133 | std::string image_transform_content = "q /image Do Q\n"; |
| 3138 | 3134 | |
| 3139 | 3135 | // enqueue all pages first |
| 3140 | - std::vector<QPDFObjectHandle> all = qpdf.getAllPages(); | |
| 3141 | - for (auto& page: all) { | |
| 3136 | + for (auto& page: pages.all()) { | |
| 3142 | 3137 | // enqueue page |
| 3143 | 3138 | enqueueObject(page); |
| 3144 | 3139 | |
| 3145 | 3140 | // enqueue page contents stream |
| 3146 | - enqueueObject(page.getKey("/Contents")); | |
| 3141 | + enqueueObject(page["/Contents"]); | |
| 3147 | 3142 | |
| 3148 | 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 | 3145 | if (!image.second.null()) { |
| 3152 | 3146 | enqueueObject(image.second); |
| 3153 | 3147 | enqueueObject(QPDFObjectHandle::newStream(&qpdf, image_transform_content)); | ... | ... |
libqpdf/qpdf/QPDF_private.hh
| ... | ... | @@ -316,11 +316,7 @@ class QPDF::Doc |
| 316 | 316 | Common& operator=(Common&&) = delete; |
| 317 | 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 | 321 | void stopOnError(std::string const& message); |
| 326 | 322 | void warn(QPDFExc const& e); |
| ... | ... | @@ -355,6 +351,8 @@ class QPDF::Doc |
| 355 | 351 | protected: |
| 356 | 352 | QPDF& qpdf; |
| 357 | 353 | QPDF::Members* m; |
| 354 | + | |
| 355 | + QPDF::Doc::Pages& pages; | |
| 358 | 356 | }; |
| 359 | 357 | |
| 360 | 358 | Doc() = delete; |
| ... | ... | @@ -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 | 1009 | inline QPDF::Doc::Linearization& |
| 1005 | 1010 | QPDF::Doc::linearization() |
| 1006 | 1011 | { | ... | ... |