Make CPDF_Annot::IsAnnotationHidden() non-static.
All the callers pass in |CPDF_Annot::m_pAnnotDict|, so just make it a
regular method in CPDF_Annot. This requires also moving
ShouldGenerateAPForAnnotation() out of an anonymous namespace in
cpdf_annot.cpp and making it a CPDF_Annot method as well.
Change-Id: I38c2a6040c6a8ec0d636b4c01f066cd80f24a5a5
Reviewed-on: https://pdfium-review.googlesource.com/c/49651
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp
index 1976ebe..dd49411 100644
--- a/core/fpdfdoc/cpdf_annot.cpp
+++ b/core/fpdfdoc/cpdf_annot.cpp
@@ -35,16 +35,6 @@
type == CPDF_Annot::Subtype::UNDERLINE;
}
-bool ShouldGenerateAPForAnnotation(CPDF_Dictionary* pAnnotDict) {
- // If AP dictionary exists and defines an appearance for normal mode, we use
- // the appearance defined in the existing AP dictionary.
- CPDF_Dictionary* pAP = pAnnotDict->GetDictFor(pdfium::annotation::kAP);
- if (pAP && pAP->GetDictFor("N"))
- return false;
-
- return !CPDF_Annot::IsAnnotationHidden(pAnnotDict);
-}
-
CPDF_Form* AnnotGetMatrix(const CPDF_Page* pPage,
CPDF_Annot* pAnnot,
CPDF_Annot::AppearanceMode mode,
@@ -126,7 +116,7 @@
}
void CPDF_Annot::GenerateAPIfNeeded() {
- if (!ShouldGenerateAPForAnnotation(m_pAnnotDict.Get()))
+ if (!ShouldGenerateAP())
return;
if (!CPVT_GenerateAP::GenerateAnnotAP(m_nSubtype, m_pDocument.Get(),
m_pAnnotDict.Get())) {
@@ -137,8 +127,19 @@
m_bHasGeneratedAP = true;
}
+bool CPDF_Annot::ShouldGenerateAP() const {
+ // If AP dictionary exists and defines an appearance for normal mode, we use
+ // the appearance defined in the existing AP dictionary.
+ const CPDF_Dictionary* pAP =
+ m_pAnnotDict->GetDictFor(pdfium::annotation::kAP);
+ if (pAP && pAP->GetDictFor("N"))
+ return false;
+
+ return !IsHidden();
+}
+
bool CPDF_Annot::ShouldDrawAnnotation() {
- if (IsAnnotationHidden(m_pAnnotDict.Get()))
+ if (IsHidden())
return false;
if (m_nSubtype == CPDF_Annot::Subtype::POPUP && !m_bOpenState)
@@ -180,6 +181,10 @@
return m_pAnnotDict->GetIntegerFor(pdfium::annotation::kF);
}
+bool CPDF_Annot::IsHidden() const {
+ return !!(GetFlags() & ANNOTFLAG_HIDDEN);
+}
+
CPDF_Stream* GetAnnotAP(CPDF_Dictionary* pAnnotDict,
CPDF_Annot::AppearanceMode eMode) {
return GetAnnotAPInternal(pAnnotDict, eMode, true);
@@ -258,12 +263,6 @@
}
// static
-bool CPDF_Annot::IsAnnotationHidden(CPDF_Dictionary* pAnnotDict) {
- return !!(pAnnotDict->GetIntegerFor(pdfium::annotation::kF) &
- ANNOTFLAG_HIDDEN);
-}
-
-// static
CPDF_Annot::Subtype CPDF_Annot::StringToAnnotSubtype(
const ByteString& sSubtype) {
if (sSubtype == "Text")
diff --git a/core/fpdfdoc/cpdf_annot.h b/core/fpdfdoc/cpdf_annot.h
index 00de807..43d8f58 100644
--- a/core/fpdfdoc/cpdf_annot.h
+++ b/core/fpdfdoc/cpdf_annot.h
@@ -64,7 +64,6 @@
XFAWIDGET
};
- static bool IsAnnotationHidden(CPDF_Dictionary* pAnnotDict);
static CPDF_Annot::Subtype StringToAnnotSubtype(const ByteString& sSubtype);
static ByteString AnnotSubtypeToString(CPDF_Annot::Subtype nSubtype);
static CFX_FloatRect RectFromQuadPointsArray(const CPDF_Array* pArray,
@@ -86,6 +85,8 @@
CPDF_Document* GetDocument() const { return m_pDocument.Get(); }
CPDF_Dictionary* GetAnnotDict() const { return m_pAnnotDict.Get(); }
+ bool IsHidden() const;
+
bool DrawAppearance(CPDF_Page* pPage,
CFX_RenderDevice* pDevice,
const CFX_Matrix& mtUser2Device,
@@ -108,6 +109,7 @@
private:
void Init();
void GenerateAPIfNeeded();
+ bool ShouldGenerateAP() const;
bool ShouldDrawAnnotation();
CFX_FloatRect RectForDrawing() const;
diff --git a/fxjs/cjs_annot.cpp b/fxjs/cjs_annot.cpp
index e23e4eb..9dc2b8c 100644
--- a/fxjs/cjs_annot.cpp
+++ b/fxjs/cjs_annot.cpp
@@ -47,8 +47,7 @@
return CJS_Result::Failure(JSMessage::kBadObjectError);
CPDF_Annot* pPDFAnnot = m_pAnnot->AsBAAnnot()->GetPDFAnnot();
- return CJS_Result::Success(pRuntime->NewBoolean(
- CPDF_Annot::IsAnnotationHidden(pPDFAnnot->GetAnnotDict())));
+ return CJS_Result::Success(pRuntime->NewBoolean(pPDFAnnot->IsHidden()));
}
CJS_Result CJS_Annot::set_hidden(CJS_Runtime* pRuntime,