MCPcopy Create free account
hub / github.com/Tencent/tgfx / Layer

Method Layer

src/pdf/PDFDocumentImpl.cpp:132–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130 int fPageObjectDescendantCount;
131
132 static std::vector<PageTreeNode> Layer(std::vector<PageTreeNode> vec, PDFDocumentImpl* doc) {
133 std::vector<PageTreeNode> result;
134 static constexpr size_t kMaxNodeSize = 8;
135 const size_t n = vec.size();
136 DEBUG_ASSERT(n >= 1);
137 const size_t result_len = ((n - 1) / kMaxNodeSize) + 1;
138 DEBUG_ASSERT(result_len >= 1);
139 DEBUG_ASSERT((n == 1 || result_len < n));
140 result.reserve(result_len);
141 size_t index = 0;
142 for (size_t i = 0; i < result_len; ++i) {
143 if (n != 1 && index + 1 == n) { // No need to create a new node.
144 result.push_back(std::move(vec[index++]));
145 continue;
146 }
147 PDFIndirectReference parent = doc->reserveRef();
148 auto kids_list = MakePDFArray();
149 int descendantCount = 0;
150 for (size_t j = 0; j < kMaxNodeSize && index < n; ++j) {
151 PageTreeNode& node = vec[index++];
152 node.fNode->insertRef("Parent", parent);
153 kids_list->appendRef(doc->emit(*node.fNode, node.fReservedRef));
154 descendantCount += node.fPageObjectDescendantCount;
155 }
156 auto next = PDFDictionary::Make("Pages");
157 next->insertInt("Count", descendantCount);
158 next->insertObject("Kids", std::move(kids_list));
159 result.push_back(PageTreeNode{std::move(next), parent, descendantCount});
160 }
161 return result;
162 }
163 };
164 std::vector<PageTreeNode> currentLayer;
165 currentLayer.reserve(pages.size());

Callers

nothing calls this directly

Calls 10

MakePDFArrayFunction · 0.85
MakeFunction · 0.85
reserveRefMethod · 0.80
insertRefMethod · 0.80
appendRefMethod · 0.80
insertIntMethod · 0.80
insertObjectMethod · 0.80
sizeMethod · 0.45
reserveMethod · 0.45
emitMethod · 0.45

Tested by

no test coverage detected