diff options
author | Henrique Nakashima <hnakashima@chromium.org> | 2018-04-16 21:48:37 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-04-16 21:48:37 +0000 |
commit | 6b26e1ae69321717c5ce098a1cd2c9f3e1099344 (patch) | |
tree | 0ede098fdef5fe788457ce2e9f793f745f634072 /core/fpdfapi/page | |
parent | 8b0cf76f00c6e89e8bb7bf4bcf2189b27baac31c (diff) | |
download | pdfium-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/page')
-rw-r--r-- | core/fpdfapi/page/cpdf_pageobjectholder.cpp | 8 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_pageobjectholder.h | 2 | ||||
-rw-r--r-- | core/fpdfapi/page/cpdf_streamcontentparser.cpp | 10 |
3 files changed, 14 insertions, 6 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()) { |