summaryrefslogtreecommitdiff
path: root/core/fpdfapi
diff options
context:
space:
mode:
authorHenrique Nakashima <hnakashima@chromium.org>2018-04-16 21:48:37 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-04-16 21:48:37 +0000
commit6b26e1ae69321717c5ce098a1cd2c9f3e1099344 (patch)
tree0ede098fdef5fe788457ce2e9f793f745f634072 /core/fpdfapi
parent8b0cf76f00c6e89e8bb7bf4bcf2189b27baac31c (diff)
downloadpdfium-6b26e1ae69321717c5ce098a1cd2c9f3e1099344.tar.xz
Remove non-const CPDF_PageObjectHolder::GetPageObjectList().
This makes it easier to control modifications to the page object list. Bug: pdfium:1051 Change-Id: Ia85c597fa6d39e89041b990b4b6c91e327ef811d Reviewed-on: https://pdfium-review.googlesource.com/30803 Commit-Queue: Henrique Nakashima <hnakashima@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'core/fpdfapi')
-rw-r--r--core/fpdfapi/page/cpdf_pageobjectholder.cpp8
-rw-r--r--core/fpdfapi/page/cpdf_pageobjectholder.h2
-rw-r--r--core/fpdfapi/page/cpdf_streamcontentparser.cpp10
-rw-r--r--core/fpdfapi/render/cpdf_progressiverenderer.cpp4
-rw-r--r--core/fpdfapi/render/cpdf_progressiverenderer.h2
5 files changed, 17 insertions, 9 deletions
diff --git a/core/fpdfapi/page/cpdf_pageobjectholder.cpp b/core/fpdfapi/page/cpdf_pageobjectholder.cpp
index 67b356fc57..310858f7c8 100644
--- a/core/fpdfapi/page/cpdf_pageobjectholder.cpp
+++ b/core/fpdfapi/page/cpdf_pageobjectholder.cpp
@@ -119,3 +119,11 @@ bool CPDF_PageObjectHolder::RemovePageObject(CPDF_PageObject* pPageObj) {
m_PageObjectList.erase(it);
return true;
}
+
+bool CPDF_PageObjectHolder::ErasePageObjectAtIndex(size_t index) {
+ if (index >= m_PageObjectList.size())
+ return false;
+
+ m_PageObjectList.erase(m_PageObjectList.begin() + index);
+ return true;
+}
diff --git a/core/fpdfapi/page/cpdf_pageobjectholder.h b/core/fpdfapi/page/cpdf_pageobjectholder.h
index bf6c476186..a65ccc8129 100644
--- a/core/fpdfapi/page/cpdf_pageobjectholder.h
+++ b/core/fpdfapi/page/cpdf_pageobjectholder.h
@@ -52,7 +52,6 @@ class CPDF_PageObjectHolder {
void ContinueParse(PauseIndicatorIface* pPause);
bool IsParsed() const { return m_ParseState == CONTENT_PARSED; }
- CPDF_PageObjectList* GetPageObjectList() { return &m_PageObjectList; }
const CPDF_PageObjectList* GetPageObjectList() const {
return &m_PageObjectList;
}
@@ -61,6 +60,7 @@ class CPDF_PageObjectHolder {
CPDF_PageObject* GetPageObjectByIndex(size_t index) const;
void AppendPageObject(std::unique_ptr<CPDF_PageObject> pPageObj);
bool RemovePageObject(CPDF_PageObject* pPageObj);
+ bool ErasePageObjectAtIndex(size_t index);
const CFX_Matrix& GetLastCTM() const { return m_LastCTM; }
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
index 3b8dac9244..736e91b3c8 100644
--- a/core/fpdfapi/page/cpdf_streamcontentparser.cpp
+++ b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
@@ -793,7 +793,7 @@ void CPDF_StreamContentParser::AddForm(CPDF_Stream* pStream) {
}
pFormObj->CalcBoundingBox();
SetGraphicStates(pFormObj.get(), true, true, true);
- m_pObjectHolder->GetPageObjectList()->push_back(std::move(pFormObj));
+ m_pObjectHolder->AppendPageObject(std::move(pFormObj));
}
CPDF_ImageObject* CPDF_StreamContentParser::AddImage(
@@ -836,7 +836,7 @@ CPDF_ImageObject* CPDF_StreamContentParser::AddImageObject(
pImageObj->CalcBoundingBox();
CPDF_ImageObject* pRet = pImageObj.get();
- m_pObjectHolder->GetPageObjectList()->push_back(std::move(pImageObj));
+ m_pObjectHolder->AppendPageObject(std::move(pImageObj));
return pRet;
}
@@ -1095,7 +1095,7 @@ void CPDF_StreamContentParser::Handle_ShadeFill() {
pObj->m_Right = bbox.right;
pObj->m_Top = bbox.top;
pObj->m_Bottom = bbox.bottom;
- m_pObjectHolder->GetPageObjectList()->push_back(std::move(pObj));
+ m_pObjectHolder->AppendPageObject(std::move(pObj));
}
void CPDF_StreamContentParser::Handle_SetCharSpace() {
@@ -1242,7 +1242,7 @@ void CPDF_StreamContentParser::AddTextObject(ByteString* pStrs,
m_ClipTextList.push_back(
std::unique_ptr<CPDF_TextObject>(pText->Clone()));
}
- m_pObjectHolder->GetPageObjectList()->push_back(std::move(pText));
+ m_pObjectHolder->AppendPageObject(std::move(pText));
}
if (pKerning && pKerning[nsegs - 1] != 0) {
if (!pFont->IsVertWriting()) {
@@ -1463,7 +1463,7 @@ void CPDF_StreamContentParser::AddPathObject(int FillType, bool bStroke) {
pPathObj->m_Matrix = matrix;
SetGraphicStates(pPathObj.get(), true, false, true);
pPathObj->CalcBoundingBox();
- m_pObjectHolder->GetPageObjectList()->push_back(std::move(pPathObj));
+ m_pObjectHolder->AppendPageObject(std::move(pPathObj));
}
if (PathClipType) {
if (!matrix.IsIdentity()) {
diff --git a/core/fpdfapi/render/cpdf_progressiverenderer.cpp b/core/fpdfapi/render/cpdf_progressiverenderer.cpp
index 922e3fd60d..b2d16300d4 100644
--- a/core/fpdfapi/render/cpdf_progressiverenderer.cpp
+++ b/core/fpdfapi/render/cpdf_progressiverenderer.cpp
@@ -63,8 +63,8 @@ void CPDF_ProgressiveRenderer::Continue(PauseIndicatorIface* pPause) {
m_ClipRect = m_pCurrentLayer->m_Matrix.GetInverse().TransformRect(
CFX_FloatRect(m_pDevice->GetClipBox()));
}
- CPDF_PageObjectList::iterator iter;
- CPDF_PageObjectList::iterator iterEnd =
+ CPDF_PageObjectList::const_iterator iter;
+ CPDF_PageObjectList::const_iterator iterEnd =
m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->end();
if (m_LastObjectRendered != iterEnd) {
iter = m_LastObjectRendered;
diff --git a/core/fpdfapi/render/cpdf_progressiverenderer.h b/core/fpdfapi/render/cpdf_progressiverenderer.h
index 5703b42918..400909bda5 100644
--- a/core/fpdfapi/render/cpdf_progressiverenderer.h
+++ b/core/fpdfapi/render/cpdf_progressiverenderer.h
@@ -54,7 +54,7 @@ class CPDF_ProgressiveRenderer {
CFX_FloatRect m_ClipRect;
uint32_t m_LayerIndex;
CPDF_RenderContext::Layer* m_pCurrentLayer;
- CPDF_PageObjectList::iterator m_LastObjectRendered;
+ CPDF_PageObjectList::const_iterator m_LastObjectRendered;
};
#endif // CORE_FPDFAPI_RENDER_CPDF_PROGRESSIVERENDERER_H_