Make CPDF_Font call through CPDF_Document::PageDataIface
Because adding to an interface from a lower layer is better
than casting to an object from an upper layer.
Change-Id: Iaa5b690d23d0725536fe220277b4ea7d3c5d5607
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/55711
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_font.cpp b/core/fpdfapi/font/cpdf_font.cpp
index 3bcc522..3c476eb 100644
--- a/core/fpdfapi/font/cpdf_font.cpp
+++ b/core/fpdfapi/font/cpdf_font.cpp
@@ -19,7 +19,6 @@
#include "core/fpdfapi/font/cpdf_truetypefont.h"
#include "core/fpdfapi/font/cpdf_type1font.h"
#include "core/fpdfapi/font/cpdf_type3font.h"
-#include "core/fpdfapi/page/cpdf_docpagedata.h"
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_document.h"
@@ -53,7 +52,7 @@
CPDF_Font::~CPDF_Font() {
if (m_pFontFile) {
- auto* pPageData = CPDF_DocPageData::FromDocument(m_pDocument.Get());
+ auto* pPageData = m_pDocument->GetPageData();
if (pPageData) {
pPageData->MaybePurgeFontFileStreamAcc(
m_pFontFile->GetStream()->AsStream());
@@ -209,7 +208,7 @@
if (!pFontFile)
return;
- auto* pData = CPDF_DocPageData::FromDocument(m_pDocument.Get());
+ auto* pData = m_pDocument->GetPageData();
m_pFontFile = pData->GetFontFileStreamAcc(pFontFile);
if (!m_pFontFile)
return;
diff --git a/core/fpdfapi/page/cpdf_docpagedata.h b/core/fpdfapi/page/cpdf_docpagedata.h
index 5b73f3f..84d11dd 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.h
+++ b/core/fpdfapi/page/cpdf_docpagedata.h
@@ -37,6 +37,9 @@
// CPDF_Document::PageDataIface:
void ClearStockFont() override;
+ RetainPtr<CPDF_StreamAcc> GetFontFileStreamAcc(
+ const CPDF_Stream* pFontStream) override;
+ void MaybePurgeFontFileStreamAcc(const CPDF_Stream* pFontStream) override;
void Clear(bool bRelease);
bool IsForceClear() const { return m_bForceClear; }
@@ -78,10 +81,6 @@
RetainPtr<CPDF_IccProfile> GetIccProfile(const CPDF_Stream* pProfileStream);
void MaybePurgeIccProfile(const CPDF_Stream* pProfileStream);
- RetainPtr<CPDF_StreamAcc> GetFontFileStreamAcc(
- const CPDF_Stream* pFontStream);
- void MaybePurgeFontFileStreamAcc(const CPDF_Stream* pFontStream);
-
RetainPtr<CPDF_ColorSpace> FindColorSpacePtr(const CPDF_Object* pCSObj) const;
CPDF_CountedPattern* FindPatternPtr(const CPDF_Object* pPatternObj) const;
diff --git a/core/fpdfapi/parser/cpdf_document.h b/core/fpdfapi/parser/cpdf_document.h
index b5b355f..918fcfa 100644
--- a/core/fpdfapi/parser/cpdf_document.h
+++ b/core/fpdfapi/parser/cpdf_document.h
@@ -59,6 +59,10 @@
virtual ~PageDataIface();
virtual void ClearStockFont() = 0;
+ virtual RetainPtr<CPDF_StreamAcc> GetFontFileStreamAcc(
+ const CPDF_Stream* pFontStream) = 0;
+ virtual void MaybePurgeFontFileStreamAcc(
+ const CPDF_Stream* pFontStream) = 0;
void SetDocument(CPDF_Document* pDoc) { m_pDoc = pDoc; }
CPDF_Document* GetDocument() const { return m_pDoc.Get(); }