Move GetDefaultAppearanceString() into cpdf_defaultappearance.cpp
Move the GetDefaultAppearanceString() function, which is generally
useful for providing input into the CPDF_DefaultAppearance ctor, into
cpdf_defaultappearance.cpp. Then add a new CPDF_DefaultAppearance ctor
that takes the same inputs as GetDefaultAppearanceString(), since its
callers ultimately want to construct a CPDF_DefaultAppearance.
Change-Id: I17fe44dc90ff9895c83eacc214810283ab97daec
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/131790
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/core/fpdfdoc/cpdf_defaultappearance.cpp b/core/fpdfdoc/cpdf_defaultappearance.cpp
index fefe6bb..ed934d2 100644
--- a/core/fpdfdoc/cpdf_defaultappearance.cpp
+++ b/core/fpdfdoc/cpdf_defaultappearance.cpp
@@ -9,14 +9,30 @@
#include <algorithm>
#include <vector>
+#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_simple_parser.h"
#include "core/fpdfapi/parser/fpdf_parser_utility.h"
+#include "core/fpdfdoc/cpdf_formfield.h"
#include "core/fxcrt/fx_string.h"
#include "core/fxcrt/notreached.h"
#include "core/fxge/cfx_color.h"
namespace {
+ByteString GetDefaultAppearanceString(const CPDF_Dictionary* annot_dict,
+ const CPDF_Dictionary* acroform_dict) {
+ ByteString default_appearance_string;
+ RetainPtr<const CPDF_Object> default_appearance_object =
+ CPDF_FormField::GetFieldAttrForDict(annot_dict, "DA");
+ if (default_appearance_object) {
+ default_appearance_string = default_appearance_object->GetString();
+ }
+ if (default_appearance_string.IsEmpty()) {
+ default_appearance_string = acroform_dict->GetByteStringFor("DA");
+ }
+ return default_appearance_string;
+}
+
// Find the token and its |nParams| parameters from the start of data,
// and move the current position to the start of those parameters.
bool FindTagParamFromStart(CPDF_SimpleParser* parser,
@@ -61,6 +77,12 @@
CPDF_DefaultAppearance::CPDF_DefaultAppearance(const ByteString& csDA)
: da_(csDA) {}
+CPDF_DefaultAppearance::CPDF_DefaultAppearance(
+ const CPDF_Dictionary* annot_dict,
+ const CPDF_Dictionary* acroform_dict)
+ : CPDF_DefaultAppearance(
+ GetDefaultAppearanceString(annot_dict, acroform_dict)) {}
+
CPDF_DefaultAppearance::~CPDF_DefaultAppearance() = default;
std::optional<CPDF_DefaultAppearance::FontNameAndSize>
diff --git a/core/fpdfdoc/cpdf_defaultappearance.h b/core/fpdfdoc/cpdf_defaultappearance.h
index 129b75f..d15d1c5 100644
--- a/core/fpdfdoc/cpdf_defaultappearance.h
+++ b/core/fpdfdoc/cpdf_defaultappearance.h
@@ -12,6 +12,7 @@
#include "core/fxcrt/bytestring.h"
#include "core/fxge/cfx_color.h"
+class CPDF_Dictionary;
class CPDF_SimpleParser;
class CPDF_DefaultAppearance {
@@ -22,6 +23,8 @@
};
explicit CPDF_DefaultAppearance(const ByteString& csDA);
+ CPDF_DefaultAppearance(const CPDF_Dictionary* annot_dict,
+ const CPDF_Dictionary* acroform_dict);
CPDF_DefaultAppearance(const CPDF_DefaultAppearance&) = delete;
CPDF_DefaultAppearance& operator=(const CPDF_DefaultAppearance&) = delete;
~CPDF_DefaultAppearance();
diff --git a/core/fpdfdoc/cpdf_generateap.cpp b/core/fpdfdoc/cpdf_generateap.cpp
index 56c1411..e921bd3 100644
--- a/core/fpdfdoc/cpdf_generateap.cpp
+++ b/core/fpdfdoc/cpdf_generateap.cpp
@@ -246,20 +246,6 @@
};
}
-ByteString GetDefaultAppearanceString(CPDF_Dictionary* annot_dict,
- CPDF_Dictionary* form_dict) {
- ByteString default_appearance_string;
- RetainPtr<const CPDF_Object> default_appearance_object =
- CPDF_FormField::GetFieldAttrForDict(annot_dict, "DA");
- if (default_appearance_object) {
- default_appearance_string = default_appearance_object->GetString();
- }
- if (default_appearance_string.IsEmpty()) {
- default_appearance_string = form_dict->GetByteStringFor("DA");
- }
- return default_appearance_string;
-}
-
struct DefaultAppearanceInfo {
ByteString font_name;
float font_size;
@@ -267,8 +253,9 @@
};
std::optional<DefaultAppearanceInfo> GetDefaultAppearanceInfo(
- const ByteString& default_appearance_string) {
- CPDF_DefaultAppearance appearance(default_appearance_string);
+ const CPDF_Dictionary* annot_dict,
+ const CPDF_Dictionary* acroform_dict) {
+ CPDF_DefaultAppearance appearance(annot_dict, acroform_dict);
auto maybe_font_name_and_size = appearance.GetFont();
if (!maybe_font_name_and_size.has_value()) {
return std::nullopt;
@@ -1051,8 +1038,7 @@
}
std::optional<DefaultAppearanceInfo> default_appearance_info =
- GetDefaultAppearanceInfo(
- GetDefaultAppearanceString(annot_dict, form_dict));
+ GetDefaultAppearanceInfo(annot_dict, form_dict);
if (!default_appearance_info.has_value()) {
return false;
}
@@ -1454,8 +1440,7 @@
}
std::optional<DefaultAppearanceInfo> default_appearance_info =
- GetDefaultAppearanceInfo(
- GetDefaultAppearanceString(annot_dict, form_dict));
+ GetDefaultAppearanceInfo(annot_dict, form_dict);
if (!default_appearance_info.has_value()) {
return;
}