Commit b84375c46fb4d2ffe5308ee5989da60489514b24
1 parent
68754ee8
Refactor `Pages::insertPage`: rename to `insert`, update parameter handling, inl…
…ine logic, update calls across codebase, and streamline method implementation.
Showing
2 changed files
with
27 additions
and
24 deletions
libqpdf/QPDF_pages.cc
| ... | ... | @@ -444,47 +444,46 @@ Pages::insertPageobjToPage(QPDFObjectHandle const& obj, int pos, bool check_dupl |
| 444 | 444 | } |
| 445 | 445 | |
| 446 | 446 | void |
| 447 | -Pages::insertPage(QPDFObjectHandle newpage, int pos) | |
| 447 | +Pages::insert(QPDFObjectHandle newpage, int pos) | |
| 448 | 448 | { |
| 449 | 449 | // pos is numbered from 0, so pos = 0 inserts at the beginning and pos = npages adds to the end. |
| 450 | 450 | |
| 451 | 451 | flattenPagesTree(); |
| 452 | 452 | |
| 453 | - if (!newpage.isIndirect()) { | |
| 453 | + if (!newpage.indirect()) { | |
| 454 | 454 | newpage = qpdf.makeIndirectObject(newpage); |
| 455 | - } else if (newpage.getOwningQPDF() != &qpdf) { | |
| 456 | - newpage.getQPDF().pushInheritedAttributesToPage(); | |
| 455 | + } else if (newpage.qpdf() != &qpdf) { | |
| 456 | + newpage.qpdf()->pushInheritedAttributesToPage(); | |
| 457 | 457 | newpage = qpdf.copyForeignObject(newpage); |
| 458 | 458 | } else { |
| 459 | 459 | QTC::TC("qpdf", "QPDF insert indirect page"); |
| 460 | 460 | } |
| 461 | 461 | |
| 462 | - if (pos < 0 || toS(pos) > all_pages.size()) { | |
| 462 | + if (pos < 0 || std::cmp_greater(pos, all_pages.size())) { | |
| 463 | 463 | throw std::runtime_error("QPDF::insertPage called with pos out of range"); |
| 464 | 464 | } |
| 465 | 465 | |
| 466 | 466 | QTC::TC( |
| 467 | 467 | "qpdf", |
| 468 | 468 | "QPDF insert page", |
| 469 | - (pos == 0) ? 0 : // insert at beginning | |
| 470 | - (pos == toI(all_pages.size())) ? 1 // at end | |
| 471 | - : 2); // insert in middle | |
| 469 | + pos == 0 ? 0 : // insert at beginning | |
| 470 | + std::cmp_equal(pos, size()) ? 1 // at end | |
| 471 | + : 2); // insert in middle | |
| 472 | 472 | |
| 473 | - auto og = newpage.getObjGen(); | |
| 474 | - if (pageobj_to_pages_pos.contains(og)) { | |
| 475 | - newpage = qpdf.makeIndirectObject(QPDFObjectHandle(newpage).shallowCopy()); | |
| 473 | + if (pageobj_to_pages_pos.contains(newpage)) { | |
| 474 | + newpage = qpdf.makeIndirectObject(newpage.copy()); | |
| 476 | 475 | } |
| 477 | 476 | |
| 478 | - QPDFObjectHandle pages = qpdf.getRoot().getKey("/Pages"); | |
| 479 | - QPDFObjectHandle kids = pages.getKey("/Kids"); | |
| 477 | + auto pages = qpdf.getRoot()["/Pages"]; | |
| 478 | + Array kids = pages["/Kids"]; | |
| 480 | 479 | |
| 481 | 480 | newpage.replaceKey("/Parent", pages); |
| 482 | - kids.insertItem(pos, newpage); | |
| 483 | - int npages = static_cast<int>(kids.size()); | |
| 484 | - pages.replaceKey("/Count", QPDFObjectHandle::newInteger(npages)); | |
| 481 | + kids.insert(pos, newpage); | |
| 482 | + size_t npages = kids.size(); | |
| 483 | + pages.replaceKey("/Count", Integer(npages)); | |
| 485 | 484 | all_pages.insert(all_pages.begin() + pos, newpage); |
| 486 | - for (int i = pos + 1; i < npages; ++i) { | |
| 487 | - insertPageobjToPage(all_pages.at(toS(i)), i, false); | |
| 485 | + for (size_t i = static_cast<size_t>(pos) + 1; i < npages; ++i) { | |
| 486 | + insertPageobjToPage(all_pages.at(i), static_cast<int>(i), false); | |
| 488 | 487 | } |
| 489 | 488 | insertPageobjToPage(newpage, pos, true); |
| 490 | 489 | } |
| ... | ... | @@ -526,17 +525,16 @@ QPDF::addPageAt(QPDFObjectHandle newpage, bool before, QPDFObjectHandle refpage) |
| 526 | 525 | if (!before) { |
| 527 | 526 | ++refpos; |
| 528 | 527 | } |
| 529 | - m->pages.insertPage(newpage, refpos); | |
| 528 | + m->pages.insert(newpage, refpos); | |
| 530 | 529 | } |
| 531 | 530 | |
| 532 | 531 | void |
| 533 | 532 | QPDF::addPage(QPDFObjectHandle newpage, bool first) |
| 534 | 533 | { |
| 535 | 534 | if (first) { |
| 536 | - m->pages.insertPage(newpage, 0); | |
| 535 | + m->pages.insert(newpage, 0); | |
| 537 | 536 | } else { |
| 538 | - m->pages.insertPage( | |
| 539 | - newpage, getRoot().getKey("/Pages").getKey("/Count").getIntValueAsInt()); | |
| 537 | + m->pages.insert(newpage, getRoot()["/Pages"]["/Count"].getIntValueAsInt()); | |
| 540 | 538 | } |
| 541 | 539 | } |
| 542 | 540 | |
| ... | ... | @@ -612,7 +610,7 @@ QPDFPageDocumentHelper::removeUnreferencedResources() |
| 612 | 610 | void |
| 613 | 611 | QPDFPageDocumentHelper::addPage(QPDFPageObjectHelper newpage, bool first) |
| 614 | 612 | { |
| 615 | - qpdf.addPage(newpage.getObjectHandle(), first); | |
| 613 | + qpdf.doc().pages().insert(newpage, first ? 0 : qpdf.doc().pages().size()); | |
| 616 | 614 | } |
| 617 | 615 | |
| 618 | 616 | void | ... | ... |
libqpdf/qpdf/QPDF_private.hh
| ... | ... | @@ -898,6 +898,12 @@ class QPDF::Doc::Pages: Common |
| 898 | 898 | } |
| 899 | 899 | |
| 900 | 900 | int find(QPDFObjGen og); |
| 901 | + void insert(QPDFObjectHandle newpage, int pos); | |
| 902 | + void | |
| 903 | + insert(QPDFObjectHandle const& newpage, size_t pos) | |
| 904 | + { | |
| 905 | + insert(newpage, static_cast<int>(pos)); | |
| 906 | + } | |
| 901 | 907 | void erase(QPDFObjectHandle& page); |
| 902 | 908 | void update_cache(); |
| 903 | 909 | void flatten_annotations(int required_flags, int forbidden_flags); |
| ... | ... | @@ -914,7 +920,6 @@ class QPDF::Doc::Pages: Common |
| 914 | 920 | return ever_called_get_all_pages_; |
| 915 | 921 | } |
| 916 | 922 | |
| 917 | - void insertPage(QPDFObjectHandle newpage, int pos); | |
| 918 | 923 | void pushInheritedAttributesToPage(bool allow_changes, bool warn_skipped_keys); |
| 919 | 924 | |
| 920 | 925 | private: | ... | ... |