aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFPageObjectHelper.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2021-03-01 22:13:03 +0100
committerJay Berkenbilt <ejb@ql.org>2021-03-03 23:05:49 +0100
commit37fcc5ff71ef2fc657623d908e50d6b388fae78e (patch)
tree59b7e7c0b7fee1b128fd1ea1afd7c938d3534189 /libqpdf/QPDFPageObjectHelper.cc
parentb444ab33529b88d4ebaba913923f474c3de2c21b (diff)
downloadqpdf-37fcc5ff71ef2fc657623d908e50d6b388fae78e.tar.zst
Create ResourceFinder from NameWatcher in QPDFPageObjectHelper
Diffstat (limited to 'libqpdf/QPDFPageObjectHelper.cc')
-rw-r--r--libqpdf/QPDFPageObjectHelper.cc43
1 files changed, 6 insertions, 37 deletions
diff --git a/libqpdf/QPDFPageObjectHelper.cc b/libqpdf/QPDFPageObjectHelper.cc
index 77343b6f..58144a3f 100644
--- a/libqpdf/QPDFPageObjectHelper.cc
+++ b/libqpdf/QPDFPageObjectHelper.cc
@@ -8,6 +8,7 @@
#include <qpdf/QPDFMatrix.hh>
#include <qpdf/QIntC.hh>
#include <qpdf/QPDFAcroFormDocumentHelper.hh>
+#include <qpdf/ResourceFinder.hh>
class ContentProvider: public QPDFObjectHandle::StreamDataProvider
{
@@ -670,38 +671,6 @@ QPDFPageObjectHelper::addContentTokenFilter(
}
}
-class NameWatcher: public QPDFObjectHandle::TokenFilter
-{
- public:
- NameWatcher() :
- saw_bad(false)
- {
- }
- virtual ~NameWatcher()
- {
- }
- virtual void handleToken(QPDFTokenizer::Token const&);
- std::set<std::string> names;
- bool saw_bad;
-};
-
-void
-NameWatcher::handleToken(QPDFTokenizer::Token const& token)
-{
- if (token.getType() == QPDFTokenizer::tt_name)
- {
- // Create a name object and get its name. This canonicalizes
- // the representation of the name
- this->names.insert(
- QPDFObjectHandle::newName(token.getValue()).getName());
- }
- else if (token.getType() == QPDFTokenizer::tt_bad)
- {
- saw_bad = true;
- }
- writeToken(token);
-}
-
bool
QPDFPageObjectHelper::removeUnreferencedResourcesHelper(
QPDFPageObjectHelper ph, std::set<std::string>& unresolved)
@@ -712,10 +681,10 @@ QPDFPageObjectHelper::removeUnreferencedResourcesHelper(
QTC::TC("qpdf", "QPDFPageObjectHelper filter form xobject");
}
- NameWatcher nw;
+ ResourceFinder rf;
try
{
- ph.filterContents(&nw);
+ ph.filterContents(&rf);
}
catch (std::exception& e)
{
@@ -725,7 +694,7 @@ QPDFPageObjectHelper::removeUnreferencedResourcesHelper(
" from this object");
return false;
}
- if (nw.saw_bad)
+ if (rf.sawBad())
{
QTC::TC("qpdf", "QPDFPageObjectHelper bad token finding names");
ph.oh.warnIfPossible(
@@ -760,7 +729,7 @@ QPDFPageObjectHelper::removeUnreferencedResourcesHelper(
}
std::set<std::string> local_unresolved;
- for (auto const& name: nw.names)
+ for (auto const& name: rf.getNames())
{
if (! known_names.count(name))
{
@@ -804,7 +773,7 @@ QPDFPageObjectHelper::removeUnreferencedResourcesHelper(
// xobject, so don't remove it.
QTC::TC("qpdf", "QPDFPageObjectHelper resolving unresolved");
}
- else if (! nw.names.count(key))
+ else if (! rf.getNames().count(key))
{
dict.removeKey(key);
}