Commit 4c3155b73a3a5f9ebc649dcf655bfebc8f79e808

Authored by m-holger
1 parent 0a0eb92a

Refactor: replace direct `_qpdf` parsing with structured `Dictionary`/`Name` API…

… for improved code readability and maintainability.
libqpdf/NNTree.cc
... ... @@ -872,7 +872,7 @@ QPDFNameTreeObjectHelper::QPDFNameTreeObjectHelper(
872 872 QPDFNameTreeObjectHelper
873 873 QPDFNameTreeObjectHelper::newEmpty(QPDF& qpdf, bool auto_repair)
874 874 {
875   - return {qpdf.makeIndirectObject("<< /Names [] >>"_qpdf), qpdf, auto_repair};
  875 + return {qpdf.makeIndirectObject(Dictionary({{"/Names", Array::empty()}})), qpdf, auto_repair};
876 876 }
877 877  
878 878 QPDFNameTreeObjectHelper::iterator::iterator(std::shared_ptr<NNTreeIterator> const& i) :
... ... @@ -1068,7 +1068,7 @@ QPDFNumberTreeObjectHelper::QPDFNumberTreeObjectHelper(
1068 1068 QPDFNumberTreeObjectHelper
1069 1069 QPDFNumberTreeObjectHelper::newEmpty(QPDF& qpdf, bool auto_repair)
1070 1070 {
1071   - return {qpdf.makeIndirectObject("<< /Nums [] >>"_qpdf), qpdf, auto_repair};
  1071 + return {qpdf.makeIndirectObject(Dictionary({{"/Nums", Array::empty()}})), qpdf, auto_repair};
1072 1072 }
1073 1073  
1074 1074 QPDFNumberTreeObjectHelper::iterator::iterator(std::shared_ptr<NNTreeIterator> const& i) :
... ...
libqpdf/QPDFJob.cc
... ... @@ -1883,7 +1883,7 @@ QPDFJob::doUnderOverlayForPage(
1883 1883 fo[from_no.no][uo_idx], name, dest_page.getTrimBox().getArrayAsRectangle(), cm);
1884 1884 dest_page.copyAnnotations(from_page, cm, &dest_afdh, &from_page.qpdf()->doc().acroform());
1885 1885 if (!new_content.empty()) {
1886   - resources.mergeResources("<< /XObject << >> >>"_qpdf);
  1886 + resources.mergeResources(Dictionary({{"/XObject", Dictionary::empty()}}));
1887 1887 auto xobject = resources.getKey("/XObject");
1888 1888 if (xobject.isDictionary()) {
1889 1889 xobject.replaceKey(name, fo[from_no.no][uo_idx]);
... ...
libqpdf/QPDFPageLabelDocumentHelper.cc
... ... @@ -131,19 +131,19 @@ QPDFPageLabelDocumentHelper::pageLabelDict(
131 131 case pl_none:
132 132 break;
133 133 case pl_digits:
134   - num.replaceKey("/S", "/D"_qpdf);
  134 + num.replaceKey("/S", Name("/D"));
135 135 break;
136 136 case pl_alpha_lower:
137   - num.replaceKey("/S", "/a"_qpdf);
  137 + num.replaceKey("/S", Name("/a"));
138 138 break;
139 139 case pl_alpha_upper:
140   - num.replaceKey("/S", "/A"_qpdf);
  140 + num.replaceKey("/S", Name("/A"));
141 141 break;
142 142 case pl_roman_lower:
143   - num.replaceKey("/S", "/r"_qpdf);
  143 + num.replaceKey("/S", Name("/r"));
144 144 break;
145 145 case pl_roman_upper:
146   - num.replaceKey("/S", "/R"_qpdf);
  146 + num.replaceKey("/S", Name("/R"));
147 147 break;
148 148 }
149 149 if (!prefix.empty()) {
... ...
libqpdf/QPDFPageObjectHelper.cc
... ... @@ -406,7 +406,7 @@ QPDFPageObjectHelper::externalizeInlineImages(size_t min_size, bool shallow)
406 406 QPDFObjectHandle resources = getAttribute("/Resources", true);
407 407 // Calling mergeResources also ensures that /XObject becomes direct and is not shared with
408 408 // other pages.
409   - resources.mergeResources("<< /XObject << >> >>"_qpdf);
  409 + resources.mergeResources(Dictionary({{"/XObject", Dictionary::empty()}}));
410 410 InlineImageTracker iit(oh().getOwningQPDF(), min_size, resources);
411 411 Pl_Buffer b("new page content");
412 412 bool filtered = false;
... ...
libqpdf/QPDF_pages.cc
... ... @@ -121,7 +121,7 @@ Pages::getAllPagesInternal(
121 121 // Unconditionally setting the /Type to /Pages could cause problems, but trying to
122 122 // accommodate the possibility may be excessive.
123 123 cur_node.warn("/Type key should be /Pages but is not; overriding");
124   - cur_node.replaceKey("/Type", "/Pages"_qpdf);
  124 + cur_node.replaceKey("/Type", Name("/Pages"));
125 125 }
126 126 if (!media_box) {
127 127 media_box = cur_node.getKey("/MediaBox").isRectangle();
... ... @@ -226,7 +226,7 @@ Pages::getAllPagesInternal(
226 226 }
227 227 if (!kid.isDictionaryOfType("/Page")) {
228 228 kid.warn("/Type key should be /Page but is not; overriding");
229   - kid.replaceKey("/Type", "/Page"_qpdf);
  229 + kid.replaceKey("/Type", Name("/Page"));
230 230 ++errors;
231 231 }
232 232 if (m->reconstructed_xref && errors > 2) {
... ... @@ -698,7 +698,7 @@ Pages::flatten_annotations_for_page(
698 698 std::string content =
699 699 aoh.getPageContentForAppearance(name, rotate, required_flags, forbidden_flags);
700 700 if (!content.empty()) {
701   - resources.mergeResources("<< /XObject << >> >>"_qpdf);
  701 + resources.mergeResources(Dictionary({{"/XObject", Dictionary({{name, as}})}}));
702 702 resources.getKey("/XObject").replaceKey(name, as);
703 703 ++next_fx;
704 704 }
... ...