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,10 +42,16 @@ using Pages = QPDF::Doc::Pages; | ||
| 42 | std::vector<QPDFObjectHandle> const& | 42 | std::vector<QPDFObjectHandle> const& |
| 43 | QPDF::getAllPages() | 43 | QPDF::getAllPages() |
| 44 | { | 44 | { |
| 45 | + return m->pages.all(); | ||
| 46 | +} | ||
| 47 | + | ||
| 48 | +std::vector<QPDFObjectHandle> const& | ||
| 49 | +Pages::all() | ||
| 50 | +{ | ||
| 45 | // Note that pushInheritedAttributesToPage may also be used to initialize m->all_pages. | 51 | // Note that pushInheritedAttributesToPage may also be used to initialize m->all_pages. |
| 46 | if (m->all_pages.empty() && !m->invalid_page_found) { | 52 | if (m->all_pages.empty() && !m->invalid_page_found) { |
| 47 | m->ever_called_get_all_pages = true; | 53 | m->ever_called_get_all_pages = true; |
| 48 | - auto root = getRoot(); | 54 | + auto root = qpdf.getRoot(); |
| 49 | QPDFObjGen::set visited; | 55 | QPDFObjGen::set visited; |
| 50 | QPDFObjGen::set seen; | 56 | QPDFObjGen::set seen; |
| 51 | QPDFObjectHandle pages = root.getKey("/Pages"); | 57 | QPDFObjectHandle pages = root.getKey("/Pages"); |
| @@ -77,14 +83,14 @@ QPDF::getAllPages() | @@ -77,14 +83,14 @@ QPDF::getAllPages() | ||
| 77 | qpdf_e_pages, m->file->getName(), "", 0, "root of pages tree has no /Kids array"); | 83 | qpdf_e_pages, m->file->getName(), "", 0, "root of pages tree has no /Kids array"); |
| 78 | } | 84 | } |
| 79 | try { | 85 | try { |
| 80 | - m->pages.getAllPagesInternal(pages, visited, seen, false, false); | 86 | + getAllPagesInternal(pages, visited, seen, false, false); |
| 81 | } catch (...) { | 87 | } catch (...) { |
| 82 | m->all_pages.clear(); | 88 | m->all_pages.clear(); |
| 83 | m->invalid_page_found = false; | 89 | m->invalid_page_found = false; |
| 84 | throw; | 90 | throw; |
| 85 | } | 91 | } |
| 86 | if (m->invalid_page_found) { | 92 | if (m->invalid_page_found) { |
| 87 | - m->pages.flattenPagesTree(); | 93 | + flattenPagesTree(); |
| 88 | m->invalid_page_found = false; | 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,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 | void insertPage(QPDFObjectHandle newpage, int pos); | 884 | void insertPage(QPDFObjectHandle newpage, int pos); |
| 877 | void flattenPagesTree(); | 885 | void flattenPagesTree(); |
| 878 | void insertPageobjToPage(QPDFObjectHandle const& obj, int pos, bool check_duplicate); | 886 | void insertPageobjToPage(QPDFObjectHandle const& obj, int pos, bool check_duplicate); |
| @@ -882,6 +890,15 @@ class QPDF::Doc::Pages: Common | @@ -882,6 +890,15 @@ class QPDF::Doc::Pages: Common | ||
| 882 | std::map<std::string, std::vector<QPDFObjectHandle>>&, | 890 | std::map<std::string, std::vector<QPDFObjectHandle>>&, |
| 883 | bool allow_changes, | 891 | bool allow_changes, |
| 884 | bool warn_skipped_keys); | 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 | }; // class QPDF::Doc::Pages | 902 | }; // class QPDF::Doc::Pages |
| 886 | 903 | ||
| 887 | class QPDF::Members: Doc | 904 | class QPDF::Members: Doc |