aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFFormFieldObjectHelper.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QPDFFormFieldObjectHelper.cc')
-rw-r--r--libqpdf/QPDFFormFieldObjectHelper.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/libqpdf/QPDFFormFieldObjectHelper.cc b/libqpdf/QPDFFormFieldObjectHelper.cc
index 97257c85..6933cb54 100644
--- a/libqpdf/QPDFFormFieldObjectHelper.cc
+++ b/libqpdf/QPDFFormFieldObjectHelper.cc
@@ -39,6 +39,29 @@ QPDFFormFieldObjectHelper::getParent()
return this->oh.getKey("/Parent"); // may be null
}
+QPDFFormFieldObjectHelper
+QPDFFormFieldObjectHelper::getTopLevelField(bool* is_different)
+{
+ auto top_field = this->oh;
+ std::set<QPDFObjGen> seen;
+ while (top_field.isDictionary() &&
+ (! top_field.getKey("/Parent").isNull()))
+ {
+ top_field = top_field.getKey("/Parent");
+ if (is_different)
+ {
+ *is_different = true;
+ }
+ auto og = top_field.getObjGen();
+ if (seen.count(og))
+ {
+ break;
+ }
+ seen.insert(og);
+ }
+ return QPDFFormFieldObjectHelper(top_field);
+}
+
QPDFObjectHandle
QPDFFormFieldObjectHelper::getInheritableFieldValue(std::string const& name)
{