Commit 1edbed57016f8aa1b98ebef679f42f3aa091174a

Authored by m-holger
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.
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
... ...