Add constants for appearance characteristics.
Bug: pdfium:1049
Change-Id: Ie46593f3b15dd0d9e50ccc7da1e3581ad59bba4a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/81632
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/constants/BUILD.gn b/constants/BUILD.gn
index 3b3ae2d..87fc747 100644
--- a/constants/BUILD.gn
+++ b/constants/BUILD.gn
@@ -10,6 +10,8 @@
"annotation_common.cpp",
"annotation_common.h",
"annotation_flags.h",
+ "appearance.cpp",
+ "appearance.h",
"form_fields.cpp",
"form_fields.h",
"form_flags.h",
diff --git a/constants/appearance.cpp b/constants/appearance.cpp
new file mode 100644
index 0000000..7a73cd4
--- /dev/null
+++ b/constants/appearance.cpp
@@ -0,0 +1,23 @@
+// Copyright 2021 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "constants/appearance.h"
+
+namespace pdfium {
+namespace appearance {
+
+// ISO 32000 spec, table 189.
+// Entries in an appearance characteristics dictionary.
+const char kR[] = "R";
+const char kBC[] = "BC";
+const char kBG[] = "BG";
+const char kCA[] = "CA";
+const char kRC[] = "RC";
+const char kAC[] = "AC";
+const char kI[] = "I";
+const char kRI[] = "RI";
+const char kIX[] = "IX";
+
+} // namespace appearance
+} // namespace pdfium
diff --git a/constants/appearance.h b/constants/appearance.h
new file mode 100644
index 0000000..a3ba044
--- /dev/null
+++ b/constants/appearance.h
@@ -0,0 +1,24 @@
+// Copyright 2021 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONSTANTS_APPEARANCE_H_
+#define CONSTANTS_APPEARANCE_H_
+
+namespace pdfium {
+namespace appearance {
+
+extern const char kR[];
+extern const char kBC[];
+extern const char kBG[];
+extern const char kCA[];
+extern const char kRC[];
+extern const char kAC[];
+extern const char kI[];
+extern const char kRI[];
+extern const char kIX[];
+
+} // namespace appearance
+} // namespace pdfium
+
+#endif // CONSTANTS_APPEARANCE_H_
diff --git a/core/fpdfdoc/cpdf_formcontrol.h b/core/fpdfdoc/cpdf_formcontrol.h
index a9c1706..d20c944 100644
--- a/core/fpdfdoc/cpdf_formcontrol.h
+++ b/core/fpdfdoc/cpdf_formcontrol.h
@@ -7,6 +7,7 @@
#ifndef CORE_FPDFDOC_CPDF_FORMCONTROL_H_
#define CORE_FPDFDOC_CPDF_FORMCONTROL_H_
+#include "constants/appearance.h"
#include "core/fpdfdoc/cpdf_aaction.h"
#include "core/fpdfdoc/cpdf_action.h"
#include "core/fpdfdoc/cpdf_annot.h"
@@ -54,29 +55,43 @@
bool HasMKEntry(const ByteString& csEntry) const;
int GetRotation() const;
- CFX_Color::TypeAndARGB GetBorderColorARGB() { return GetColorARGB("BC"); }
+ CFX_Color::TypeAndARGB GetBorderColorARGB() {
+ return GetColorARGB(pdfium::appearance::kBC);
+ }
float GetOriginalBorderColorComponent(int index) {
- return GetOriginalColorComponent(index, "BC");
+ return GetOriginalColorComponent(index, pdfium::appearance::kBC);
}
- CFX_Color GetOriginalBorderColor() { return GetOriginalColor("BC"); }
+ CFX_Color GetOriginalBorderColor() {
+ return GetOriginalColor(pdfium::appearance::kBC);
+ }
- CFX_Color::TypeAndARGB GetBackgroundColor() { return GetColorARGB("BG"); }
+ CFX_Color::TypeAndARGB GetBackgroundColor() {
+ return GetColorARGB(pdfium::appearance::kBG);
+ }
float GetOriginalBackgroundColorComponent(int index) {
- return GetOriginalColorComponent(index, "BG");
+ return GetOriginalColorComponent(index, pdfium::appearance::kBG);
}
- CFX_Color GetOriginalBackgroundColor() { return GetOriginalColor("BG"); }
+ CFX_Color GetOriginalBackgroundColor() {
+ return GetOriginalColor(pdfium::appearance::kBG);
+ }
- WideString GetNormalCaption() const { return GetCaption("CA"); }
- WideString GetRolloverCaption() const { return GetCaption("RC"); }
- WideString GetDownCaption() const { return GetCaption("AC"); }
+ WideString GetNormalCaption() const {
+ return GetCaption(pdfium::appearance::kCA);
+ }
+ WideString GetRolloverCaption() const {
+ return GetCaption(pdfium::appearance::kRC);
+ }
+ WideString GetDownCaption() const {
+ return GetCaption(pdfium::appearance::kAC);
+ }
- CPDF_Stream* GetNormalIcon() { return GetIcon("I"); }
- CPDF_Stream* GetRolloverIcon() { return GetIcon("RI"); }
- CPDF_Stream* GetDownIcon() { return GetIcon("IX"); }
+ CPDF_Stream* GetNormalIcon() { return GetIcon(pdfium::appearance::kI); }
+ CPDF_Stream* GetRolloverIcon() { return GetIcon(pdfium::appearance::kRI); }
+ CPDF_Stream* GetDownIcon() { return GetIcon(pdfium::appearance::kIX); }
CPDF_IconFit GetIconFit() const;
int GetTextPosition() const;
diff --git a/core/fpdfdoc/cpdf_generateap.cpp b/core/fpdfdoc/cpdf_generateap.cpp
index 0b06dcc..667c66c 100644
--- a/core/fpdfdoc/cpdf_generateap.cpp
+++ b/core/fpdfdoc/cpdf_generateap.cpp
@@ -12,6 +12,7 @@
#include <utility>
#include "constants/annotation_common.h"
+#include "constants/appearance.h"
#include "constants/form_fields.h"
#include "core/fpdfapi/font/cpdf_font.h"
#include "core/fpdfapi/page/cpdf_docpagedata.h"
@@ -968,7 +969,8 @@
CFX_FloatRect rcAnnot = pAnnotDict->GetRectFor(pdfium::annotation::kRect);
CPDF_Dictionary* pMKDict = pAnnotDict->GetDictFor("MK");
- int32_t nRotate = pMKDict ? pMKDict->GetIntegerFor("R") : 0;
+ int32_t nRotate =
+ pMKDict ? pMKDict->GetIntegerFor(pdfium::appearance::kR) : 0;
CFX_FloatRect rcBBox;
CFX_Matrix matrix;
@@ -1037,10 +1039,11 @@
CFX_Color crBorder;
CFX_Color crBG;
if (pMKDict) {
- if (CPDF_Array* pArray = pMKDict->GetArrayFor("BC"))
+ CPDF_Array* pArray = pMKDict->GetArrayFor(pdfium::appearance::kBC);
+ if (pArray)
crBorder = fpdfdoc::CFXColorFromArray(*pArray);
- if (CPDF_Array* pArray = pMKDict->GetArrayFor("BG"))
- crBG = fpdfdoc::CFXColorFromArray(*pArray);
+ pArray = pMKDict->GetArrayFor(pdfium::appearance::kBG);
+ crBG = fpdfdoc::CFXColorFromArray(*pArray);
}
std::ostringstream sAppStream;
ByteString sBG = GenerateColorAP(crBG, PaintOperation::kFill);
diff --git a/fpdfsdk/cpdfsdk_appstream.cpp b/fpdfsdk/cpdfsdk_appstream.cpp
index 2c3c198..74de5ac 100644
--- a/fpdfsdk/cpdfsdk_appstream.cpp
+++ b/fpdfsdk/cpdfsdk_appstream.cpp
@@ -10,6 +10,7 @@
#include <sstream>
#include <utility>
+#include "constants/appearance.h"
#include "constants/form_flags.h"
#include "core/fpdfapi/font/cpdf_font.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
@@ -1216,25 +1217,25 @@
WideString csNormalCaption;
WideString csRolloverCaption;
WideString csDownCaption;
- if (pControl->HasMKEntry("CA"))
+ if (pControl->HasMKEntry(pdfium::appearance::kCA))
csNormalCaption = pControl->GetNormalCaption();
- if (pControl->HasMKEntry("RC"))
+ if (pControl->HasMKEntry(pdfium::appearance::kRC))
csRolloverCaption = pControl->GetRolloverCaption();
- if (pControl->HasMKEntry("AC"))
+ if (pControl->HasMKEntry(pdfium::appearance::kAC))
csDownCaption = pControl->GetDownCaption();
CPDF_Stream* pNormalIcon = nullptr;
CPDF_Stream* pRolloverIcon = nullptr;
CPDF_Stream* pDownIcon = nullptr;
- if (pControl->HasMKEntry("I"))
+ if (pControl->HasMKEntry(pdfium::appearance::kI))
pNormalIcon = pControl->GetNormalIcon();
- if (pControl->HasMKEntry("RI"))
+ if (pControl->HasMKEntry(pdfium::appearance::kRI))
pRolloverIcon = pControl->GetRolloverIcon();
- if (pControl->HasMKEntry("IX"))
+ if (pControl->HasMKEntry(pdfium::appearance::kIX))
pDownIcon = pControl->GetDownIcon();
SetDefaultIconName(pNormalIcon, "ImgA");