Add new kConstants for form controls
-- Update references to ISO32000-1:2008
Change-Id: Ifd36f762ee953f68221be1c69c03c367d30d404c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/97079
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/constants/form_fields.cpp b/constants/form_fields.cpp
index 7409e8d..89c28ff 100644
--- a/constants/form_fields.cpp
+++ b/constants/form_fields.cpp
@@ -7,7 +7,7 @@
namespace pdfium {
namespace form_fields {
-// PDF 1.7 spec, table 8.69.
+// ISO 32000-1:2008 table 220.
// Entries common to all field dictionaries.
const char kFT[] = "FT";
const char kParent[] = "Parent";
@@ -20,11 +20,19 @@
const char kDV[] = "DV";
const char kAA[] = "AA";
-// FT values from PDF 1.7 spec, table 8.69.
+// ISO 32000-1:2008 table 220.
+// Values for FT keyword.
const char kBtn[] = "Btn";
const char kTx[] = "Tx";
const char kCh[] = "Ch";
const char kSig[] = "Sig";
+// ISO 32000-1:2008 table 222.
+// Entries common to fields containing variable text.
+const char kDA[] = "DA";
+const char kQ[] = "Q";
+const char kDS[] = "DS";
+const char kRV[] = "RV";
+
} // namespace form_fields
} // namespace pdfium
diff --git a/constants/form_fields.h b/constants/form_fields.h
index cd2b0fa..e12f4a0 100644
--- a/constants/form_fields.h
+++ b/constants/form_fields.h
@@ -24,6 +24,11 @@
extern const char kCh[];
extern const char kSig[];
+extern const char kDA[];
+extern const char kQ[];
+extern const char kDS[];
+extern const char kRV[];
+
} // namespace form_fields
} // namespace pdfium
diff --git a/core/fpdfdoc/cpdf_formcontrol.cpp b/core/fpdfdoc/cpdf_formcontrol.cpp
index d514ee3..cb8cb11 100644
--- a/core/fpdfdoc/cpdf_formcontrol.cpp
+++ b/core/fpdfdoc/cpdf_formcontrol.cpp
@@ -9,6 +9,7 @@
#include <iterator>
#include <utility>
+#include "constants/form_fields.h"
#include "core/fpdfapi/font/cpdf_font.h"
#include "core/fpdfapi/page/cpdf_docpagedata.h"
#include "core/fpdfapi/parser/cpdf_array.h"
@@ -182,11 +183,12 @@
}
CPDF_DefaultAppearance CPDF_FormControl::GetDefaultAppearance() const {
- if (m_pWidgetDict->KeyExist("DA"))
- return CPDF_DefaultAppearance(m_pWidgetDict->GetStringFor("DA"));
-
- const CPDF_Object* pObj =
- CPDF_FormField::GetFieldAttr(m_pField->GetDict(), "DA");
+ if (m_pWidgetDict->KeyExist(pdfium::form_fields::kDA)) {
+ return CPDF_DefaultAppearance(
+ m_pWidgetDict->GetStringFor(pdfium::form_fields::kDA));
+ }
+ const CPDF_Object* pObj = CPDF_FormField::GetFieldAttr(
+ m_pField->GetDict(), pdfium::form_fields::kDA);
if (!pObj)
return m_pForm->GetDefaultAppearance();
@@ -246,11 +248,11 @@
}
int CPDF_FormControl::GetControlAlignment() const {
- if (m_pWidgetDict->KeyExist("Q"))
- return m_pWidgetDict->GetIntegerFor("Q", 0);
+ if (m_pWidgetDict->KeyExist(pdfium::form_fields::kQ))
+ return m_pWidgetDict->GetIntegerFor(pdfium::form_fields::kQ, 0);
- const CPDF_Object* pObj =
- CPDF_FormField::GetFieldAttr(m_pField->GetDict(), "Q");
+ const CPDF_Object* pObj = CPDF_FormField::GetFieldAttr(
+ m_pField->GetDict(), pdfium::form_fields::kQ);
if (pObj)
return pObj->GetInteger();
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index a55c7fd..428728b 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -192,7 +192,7 @@
csValue = pV->GetUnicodeText();
}
- bool bHasRV = !!GetFieldAttr(m_pDict.Get(), "RV");
+ bool bHasRV = !!GetFieldAttr(m_pDict.Get(), pdfium::form_fields::kRV);
if (!bHasRV && (csDValue == csValue))
return false;
@@ -210,11 +210,11 @@
m_pDict->SetFor(pdfium::form_fields::kV, std::move(pClone));
if (bHasRV) {
- m_pDict->SetFor("RV", pDV->Clone());
+ m_pDict->SetFor(pdfium::form_fields::kRV, pDV->Clone());
}
} else {
m_pDict->RemoveFor(pdfium::form_fields::kV);
- m_pDict->RemoveFor("RV");
+ m_pDict->RemoveFor(pdfium::form_fields::kRV);
}
}
NotifyAfterValueChange();
@@ -355,7 +355,8 @@
int iIndex = FindOption(csValue);
if (iIndex < 0) {
if (m_Type == kRichText && !bDefault) {
- m_pDict->SetFor("RV", m_pDict->GetObjectFor(key)->Clone());
+ m_pDict->SetFor(pdfium::form_fields::kRV,
+ m_pDict->GetObjectFor(key)->Clone());
}
m_pDict->RemoveFor("I");
} else {