Commit 1edbed57016f8aa1b98ebef679f42f3aa091174a
1 parent
ae90619f
Refactor `QPDF::getAllPages` and `Pages` methods: move implementation to new `Pa…
…ges::all` method, add `Pages::size` and `empty` methods, move `getAllPagesInternal` to private section, streamline encapsulation, and enhance code organization.
Showing
2 changed files
with
32 additions
and
9 deletions
libqpdf/QPDF_pages.cc
| ... | ... | @@ -42,10 +42,16 @@ using Pages = QPDF::Doc::Pages; |
| 42 | 42 | std::vector<QPDFObjectHandle> const& |
| 43 | 43 | QPDF::getAllPages() |
| 44 | 44 | { |
| 45 | + return m->pages.all(); | |
| 46 | +} | |
| 47 | + | |
| 48 | +std::vector<QPDFObjectHandle> const& | |
| 49 | +Pages::all() | |
| 50 | +{ | |
| 45 | 51 | // Note that pushInheritedAttributesToPage may also be used to initialize m->all_pages. |
| 46 | 52 | if (m->all_pages.empty() && !m->invalid_page_found) { |
| 47 | 53 | m->ever_called_get_all_pages = true; |
| 48 | - auto root = getRoot(); | |
| 54 | + auto root = qpdf.getRoot(); | |
| 49 | 55 | QPDFObjGen::set visited; |
| 50 | 56 | QPDFObjGen::set seen; |
| 51 | 57 | QPDFObjectHandle pages = root.getKey("/Pages"); |
| ... | ... | @@ -77,14 +83,14 @@ QPDF::getAllPages() |
| 77 | 83 | qpdf_e_pages, m->file->getName(), "", 0, "root of pages tree has no /Kids array"); |
| 78 | 84 | } |
| 79 | 85 | try { |
| 80 | - m->pages.getAllPagesInternal(pages, visited, seen, false, false); | |
| 86 | + getAllPagesInternal(pages, visited, seen, false, false); | |
| 81 | 87 | } catch (...) { |
| 82 | 88 | m->all_pages.clear(); |
| 83 | 89 | m->invalid_page_found = false; |
| 84 | 90 | throw; |
| 85 | 91 | } |
| 86 | 92 | if (m->invalid_page_found) { |
| 87 | - m->pages.flattenPagesTree(); | |
| 93 | + flattenPagesTree(); | |
| 88 | 94 | m->invalid_page_found = false; |
| 89 | 95 | } |
| 90 | 96 | } | ... | ... |
libqpdf/qpdf/QPDF_private.hh
| ... | ... | @@ -867,12 +867,20 @@ class QPDF::Doc::Pages: Common |
| 867 | 867 | { |
| 868 | 868 | } |
| 869 | 869 | |
| 870 | - void getAllPagesInternal( | |
| 871 | - QPDFObjectHandle cur_pages, | |
| 872 | - QPDFObjGen::set& visited, | |
| 873 | - QPDFObjGen::set& seen, | |
| 874 | - bool media_box, | |
| 875 | - bool resources); | |
| 870 | + std::vector<QPDFObjectHandle> const& all(); | |
| 871 | + | |
| 872 | + bool | |
| 873 | + empty() | |
| 874 | + { | |
| 875 | + return all().empty(); | |
| 876 | + } | |
| 877 | + | |
| 878 | + size_t | |
| 879 | + size() | |
| 880 | + { | |
| 881 | + return all().size(); | |
| 882 | + } | |
| 883 | + | |
| 876 | 884 | void insertPage(QPDFObjectHandle newpage, int pos); |
| 877 | 885 | void flattenPagesTree(); |
| 878 | 886 | void insertPageobjToPage(QPDFObjectHandle const& obj, int pos, bool check_duplicate); |
| ... | ... | @@ -882,6 +890,15 @@ class QPDF::Doc::Pages: Common |
| 882 | 890 | std::map<std::string, std::vector<QPDFObjectHandle>>&, |
| 883 | 891 | bool allow_changes, |
| 884 | 892 | bool warn_skipped_keys); |
| 893 | + | |
| 894 | + private: | |
| 895 | + void getAllPagesInternal( | |
| 896 | + QPDFObjectHandle cur_pages, | |
| 897 | + QPDFObjGen::set& visited, | |
| 898 | + QPDFObjGen::set& seen, | |
| 899 | + bool media_box, | |
| 900 | + bool resources); | |
| 901 | + | |
| 885 | 902 | }; // class QPDF::Doc::Pages |
| 886 | 903 | |
| 887 | 904 | class QPDF::Members: Doc | ... | ... |