Index: core/fpdfdoc/cpdf_annot.cpp |
diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp |
index 942d334a2d87c9b206131c9e52e6719050b2d29c..4e0b04e9b623195c36ff47093d66f53cf7d53941 100644 |
--- a/core/fpdfdoc/cpdf_annot.cpp |
+++ b/core/fpdfdoc/cpdf_annot.cpp |
@@ -18,6 +18,19 @@ |
#include "core/fxge/include/cfx_pathdata.h" |
#include "core/fxge/include/cfx_renderdevice.h" |
+namespace { |
+ |
+bool ShouldGenerateAPForAnnotation(CPDF_Dictionary* pAnnotDict) { |
+ // If AP dictionary exists, we use the appearance defined in the |
+ // existing AP dictionary. |
+ if (pAnnotDict->KeyExist("AP")) |
+ return false; |
+ |
+ return !CPDF_Annot::IsAnnotationHidden(pAnnotDict); |
+} |
+ |
+} // namespace |
+ |
CPDF_Annot::CPDF_Annot(CPDF_Dictionary* pDict, |
CPDF_Document* pDocument, |
bool bToOwnDict) |
@@ -37,6 +50,9 @@ CPDF_Annot::~CPDF_Annot() { |
} |
void CPDF_Annot::GenerateAPIfNeeded() { |
+ if (!ShouldGenerateAPForAnnotation(m_pAnnotDict)) |
+ return; |
+ |
if (m_nSubtype == CPDF_Annot::Subtype::CIRCLE) |
CPVT_GenerateAP::GenerateCircleAP(m_pDocument, m_pAnnotDict); |
else if (m_nSubtype == CPDF_Annot::Subtype::HIGHLIGHT) |
@@ -149,7 +165,7 @@ static CPDF_Form* FPDFDOC_Annot_GetMatrix(const CPDF_Page* pPage, |
return pForm; |
} |
-// static |
+// Static. |
bool CPDF_Annot::IsAnnotationHidden(CPDF_Dictionary* pAnnotDict) { |
return !!(pAnnotDict->GetIntegerBy("F") & ANNOTFLAG_HIDDEN); |
} |