/src/qpdf/libqpdf/ResourceFinder.cc
Line | Count | Source (jump to first uncovered line) |
1 | | #include <qpdf/ResourceFinder.hh> |
2 | | |
3 | | void |
4 | | ResourceFinder::handleObject(QPDFObjectHandle obj, size_t offset, size_t) |
5 | 0 | { |
6 | 0 | if (obj.isOperator() && !last_name.empty()) { |
7 | 0 | static const std::map<std::string, std::string> op_to_rtype{ |
8 | 0 | {"CS", "/ColorSpace"}, |
9 | 0 | {"cs", "/ColorSpace"}, |
10 | 0 | {"gs", "/ExtGState"}, |
11 | 0 | {"Tf", "/Font"}, |
12 | 0 | {"SCN", "/Pattern"}, |
13 | 0 | {"scn", "/Pattern"}, |
14 | 0 | {"BDC", "/Properties"}, |
15 | 0 | {"DP", "/Properties"}, |
16 | 0 | {"sh", "/Shading"}, |
17 | 0 | {"Do", "/XObject"}, |
18 | 0 | }; |
19 | 0 | std::string op = obj.getOperatorValue(); |
20 | 0 | auto iter = op_to_rtype.find(op); |
21 | 0 | if (iter == op_to_rtype.end()) { |
22 | 0 | return; |
23 | 0 | } |
24 | 0 | names.insert(last_name); |
25 | 0 | names_by_resource_type[iter->second][last_name].push_back(last_name_offset); |
26 | 0 | } else if (obj.isName()) { |
27 | 0 | last_name = obj.getName(); |
28 | 0 | last_name_offset = offset; |
29 | 0 | } |
30 | 0 | } |
31 | | |
32 | | void |
33 | | ResourceFinder::handleEOF() |
34 | 0 | { |
35 | 0 | } |