Remove CPDF_RenderOptions::GetOCContext().
Add CheckPageObjectVisible() and CheckOCGDictVisible() wrappers
instead.
-- Use more descriptive names for OC context methods while at it.
Change-Id: Idd6b4a2a858ae60652e82df4c855f9428750c2dd
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/99513
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_occontext.cpp b/core/fpdfapi/page/cpdf_occontext.cpp
index b7a18c5..b159118 100644
--- a/core/fpdfapi/page/cpdf_occontext.cpp
+++ b/core/fpdfapi/page/cpdf_occontext.cpp
@@ -172,13 +172,13 @@
return bState;
}
-bool CPDF_OCContext::CheckObjectVisible(const CPDF_PageObject* pObj) const {
+bool CPDF_OCContext::CheckPageObjectVisible(const CPDF_PageObject* pObj) const {
const CPDF_ContentMarks* pMarks = pObj->GetContentMarks();
for (size_t i = 0; i < pMarks->CountItems(); ++i) {
const CPDF_ContentMarkItem* item = pMarks->GetItem(i);
if (item->GetName() == "OC" &&
item->GetParamType() == CPDF_ContentMarkItem::kPropertiesDict &&
- !CheckOCGVisible(item->GetParam().Get())) {
+ !CheckOCGDictVisible(item->GetParam().Get())) {
return false;
}
}
@@ -269,7 +269,8 @@
return !bValidEntrySeen || bState;
}
-bool CPDF_OCContext::CheckOCGVisible(const CPDF_Dictionary* pOCGDict) const {
+bool CPDF_OCContext::CheckOCGDictVisible(
+ const CPDF_Dictionary* pOCGDict) const {
if (!pOCGDict)
return true;
diff --git a/core/fpdfapi/page/cpdf_occontext.h b/core/fpdfapi/page/cpdf_occontext.h
index 9c70068..6b4d2e7 100644
--- a/core/fpdfapi/page/cpdf_occontext.h
+++ b/core/fpdfapi/page/cpdf_occontext.h
@@ -25,8 +25,8 @@
CONSTRUCT_VIA_MAKE_RETAIN;
- bool CheckOCGVisible(const CPDF_Dictionary* pOCGDict) const;
- bool CheckObjectVisible(const CPDF_PageObject* pObj) const;
+ bool CheckOCGDictVisible(const CPDF_Dictionary* pOCGDict) const;
+ bool CheckPageObjectVisible(const CPDF_PageObject* pObj) const;
private:
CPDF_OCContext(CPDF_Document* pDoc, UsageType eUsageType);
diff --git a/core/fpdfapi/render/cpdf_imagerenderer.cpp b/core/fpdfapi/render/cpdf_imagerenderer.cpp
index c5fda1b..e77a513 100644
--- a/core/fpdfapi/render/cpdf_imagerenderer.cpp
+++ b/core/fpdfapi/render/cpdf_imagerenderer.cpp
@@ -198,13 +198,13 @@
m_BlendType = blendType;
m_mtObj2Device = mtObj2Device;
RetainPtr<const CPDF_Dictionary> pOC = m_pImageObject->GetImage()->GetOC();
- if (pOC && GetRenderOptions().GetOCContext() &&
- !GetRenderOptions().GetOCContext()->CheckOCGVisible(pOC)) {
+ if (pOC && !GetRenderOptions().CheckOCGDictVisible(pOC))
return false;
- }
+
m_ImageMatrix = m_pImageObject->matrix() * mtObj2Device;
if (StartLoadDIBBase())
return true;
+
return StartRenderDIBBase();
}
diff --git a/core/fpdfapi/render/cpdf_renderoptions.cpp b/core/fpdfapi/render/cpdf_renderoptions.cpp
index 69701cf..2b38fee 100644
--- a/core/fpdfapi/render/cpdf_renderoptions.cpp
+++ b/core/fpdfapi/render/cpdf_renderoptions.cpp
@@ -67,3 +67,12 @@
uint32_t CPDF_RenderOptions::GetCacheSizeLimit() const {
return kCacheSizeLimitBytes;
}
+
+bool CPDF_RenderOptions::CheckOCGDictVisible(const CPDF_Dictionary* pOC) const {
+ return !m_pOCContext || m_pOCContext->CheckOCGDictVisible(pOC);
+}
+
+bool CPDF_RenderOptions::CheckPageObjectVisible(
+ const CPDF_PageObject* pPageObj) const {
+ return !m_pOCContext || m_pOCContext->CheckPageObjectVisible(pPageObj);
+}
diff --git a/core/fpdfapi/render/cpdf_renderoptions.h b/core/fpdfapi/render/cpdf_renderoptions.h
index 185008a..9cd55c0 100644
--- a/core/fpdfapi/render/cpdf_renderoptions.h
+++ b/core/fpdfapi/render/cpdf_renderoptions.h
@@ -14,6 +14,8 @@
#include "core/fxcrt/retain_ptr.h"
#include "core/fxge/dib/fx_dib.h"
+class CPDF_Dictionary;
+
class CPDF_RenderOptions {
public:
enum Type : uint8_t { kNormal = 0, kGray, kAlpha, kForcedColor };
@@ -64,6 +66,8 @@
Options& GetOptions() { return m_Options; }
uint32_t GetCacheSizeLimit() const;
+ bool CheckOCGDictVisible(const CPDF_Dictionary* pOC) const;
+ bool CheckPageObjectVisible(const CPDF_PageObject* pPageObj) const;
void SetDrawAnnots(bool draw) { m_bDrawAnnots = draw; }
bool GetDrawAnnots() const { return m_bDrawAnnots; }
@@ -71,7 +75,6 @@
void SetOCContext(RetainPtr<CPDF_OCContext> context) {
m_pOCContext = context;
}
- const CPDF_OCContext* GetOCContext() const { return m_pOCContext.Get(); }
private:
Type m_ColorMode = kNormal;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index c5f97e3..f4cac06 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -255,8 +255,7 @@
return;
}
m_pCurObj = pObj;
- if (m_Options.GetOCContext() &&
- !m_Options.GetOCContext()->CheckObjectVisible(pObj)) {
+ if (!m_Options.CheckPageObjectVisible(pObj)) {
return;
}
ProcessClipPath(pObj->m_ClipPath, mtObj2Device);
@@ -283,10 +282,8 @@
}
m_pCurObj = pObj;
- if (m_Options.GetOCContext() &&
- !m_Options.GetOCContext()->CheckObjectVisible(pObj)) {
+ if (!m_Options.CheckPageObjectVisible(pObj))
return false;
- }
ProcessClipPath(pObj->m_ClipPath, mtObj2Device);
if (ProcessTransparency(pObj, mtObj2Device))
@@ -395,10 +392,9 @@
#endif
RetainPtr<const CPDF_Dictionary> pOC =
pFormObj->form()->GetDict()->GetDictFor("OC");
- if (pOC && m_Options.GetOCContext() &&
- !m_Options.GetOCContext()->CheckOCGVisible(pOC.Get())) {
+ if (pOC && !m_Options.CheckOCGDictVisible(pOC.Get()))
return true;
- }
+
CFX_Matrix matrix = pFormObj->form_matrix() * mtObj2Device;
RetainPtr<const CPDF_Dictionary> pResources =
pFormObj->form()->GetDict()->GetDictFor("Resources");