aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFAnnotationObjectHelper.cc11
-rw-r--r--libqpdf/QPDFFormFieldObjectHelper.cc64
2 files changed, 72 insertions, 3 deletions
diff --git a/libqpdf/QPDFAnnotationObjectHelper.cc b/libqpdf/QPDFAnnotationObjectHelper.cc
index 3295fd3a..5e4be795 100644
--- a/libqpdf/QPDFAnnotationObjectHelper.cc
+++ b/libqpdf/QPDFAnnotationObjectHelper.cc
@@ -49,6 +49,13 @@ QPDFAnnotationObjectHelper::getAppearanceState()
return "";
}
+int
+QPDFAnnotationObjectHelper::getFlags()
+{
+ QPDFObjectHandle flags_obj = this->oh.getKey("/F");
+ return flags_obj.isInteger() ? flags_obj.getIntValue() : 0;
+}
+
QPDFObjectHandle
QPDFAnnotationObjectHelper::getAppearanceStream(
std::string const& which,
@@ -169,13 +176,11 @@ QPDFAnnotationObjectHelper::getPageContentForAppearance(
// appearance matrix.
QPDFObjectHandle rect_obj = this->oh.getKey("/Rect");
- QPDFObjectHandle flags_obj = this->oh.getKey("/F");
QPDFObjectHandle as = getAppearanceStream("/N").getDict();
QPDFObjectHandle bbox_obj = as.getKey("/BBox");
QPDFObjectHandle matrix_obj = as.getKey("/Matrix");
- int flags = flags_obj.isInteger() ? flags_obj.getIntValue() : 0;
-
+ int flags = getFlags();
if (flags & forbidden_flags)
{
QTC::TC("qpdf", "QPDFAnnotationObjectHelper forbidden flags");
diff --git a/libqpdf/QPDFFormFieldObjectHelper.cc b/libqpdf/QPDFFormFieldObjectHelper.cc
index 283b632d..1a04742a 100644
--- a/libqpdf/QPDFFormFieldObjectHelper.cc
+++ b/libqpdf/QPDFFormFieldObjectHelper.cc
@@ -190,6 +190,70 @@ QPDFFormFieldObjectHelper::getQuadding()
return result;
}
+int
+QPDFFormFieldObjectHelper::getFlags()
+{
+ QPDFObjectHandle f = getInheritableFieldValue("/Ff");
+ return f.isInteger() ? f.getIntValue() : 0;
+}
+
+bool
+QPDFFormFieldObjectHelper::isText()
+{
+ return (getFieldType() == "/Tx");
+}
+
+bool
+QPDFFormFieldObjectHelper::isCheckbox()
+{
+ return ((getFieldType() == "/Btn") &&
+ ((getFlags() & (ff_btn_radio | ff_btn_pushbutton)) == 0));
+}
+
+bool
+QPDFFormFieldObjectHelper::isRadioButton()
+{
+ return ((getFieldType() == "/Btn") &&
+ ((getFlags() & ff_btn_radio) == ff_btn_radio));
+}
+
+bool
+QPDFFormFieldObjectHelper::isPushbutton()
+{
+ return ((getFieldType() == "/Btn") &&
+ ((getFlags() & ff_btn_pushbutton) == ff_btn_pushbutton));
+}
+
+bool
+QPDFFormFieldObjectHelper::isChoice()
+{
+ return (getFieldType() == "/Ch");
+}
+
+std::vector<std::string>
+QPDFFormFieldObjectHelper::getChoices()
+{
+ std::vector<std::string> result;
+ if (! isChoice())
+ {
+ return result;
+ }
+ QPDFObjectHandle opt = getInheritableFieldValue("/Opt");
+ if (opt.isArray())
+ {
+ size_t n = opt.getArrayNItems();
+ for (size_t i = 0; i < n; ++i)
+ {
+ QPDFObjectHandle item = opt.getArrayItem(i);
+ if (item.isString())
+ {
+ result.push_back(item.getUTF8Value());
+ }
+ }
+ }
+ return result;
+}
+
void
QPDFFormFieldObjectHelper::setFieldAttribute(
std::string const& key, QPDFObjectHandle value)