From 35841fa4e3dbf8f9146f78def048c4a287894a8a Mon Sep 17 00:00:00 2001 From: Henrique Nakashima Date: Thu, 15 Mar 2018 15:25:16 +0000 Subject: Create FPDFPage_RemoveObject(). This call removes a page object from a page. We currently offer an API to insert these objects, but not to remove. Bug: pdfium:1037 Change-Id: I35ff596f9e7c87a39051f0cb1de40a5bec40fee5 Reviewed-on: https://pdfium-review.googlesource.com/28492 Reviewed-by: dsinclair Commit-Queue: Henrique Nakashima --- core/fpdfapi/page/cpdf_page.cpp | 14 ++++++++++++++ core/fpdfapi/page/cpdf_page.h | 1 + 2 files changed, 15 insertions(+) (limited to 'core/fpdfapi') diff --git a/core/fpdfapi/page/cpdf_page.cpp b/core/fpdfapi/page/cpdf_page.cpp index ba93f4a7d3..0c8d63de71 100644 --- a/core/fpdfapi/page/cpdf_page.cpp +++ b/core/fpdfapi/page/cpdf_page.cpp @@ -180,6 +180,20 @@ int CPDF_Page::GetPageRotation() const { return (rotate < 0) ? (rotate + 4) : rotate; } +bool CPDF_Page::RemoveObject(CPDF_PageObject* pPageObj) { + pdfium::FakeUniquePtr p(pPageObj); + + auto* pPageObjectList = GetPageObjectList(); + auto it = + std::find(std::begin(*pPageObjectList), std::end(*pPageObjectList), p); + if (it == std::end(*pPageObjectList)) + return false; + + it->release(); + pPageObjectList->erase(it); + return true; +} + bool GraphicsData::operator<(const GraphicsData& other) const { if (fillAlpha != other.fillAlpha) return fillAlpha < other.fillAlpha; diff --git a/core/fpdfapi/page/cpdf_page.h b/core/fpdfapi/page/cpdf_page.h index c7aa12e474..995d99cf4e 100644 --- a/core/fpdfapi/page/cpdf_page.h +++ b/core/fpdfapi/page/cpdf_page.h @@ -54,6 +54,7 @@ class CPDF_Page : public CPDF_PageObjectHolder { View* GetView() const { return m_pView; } void SetView(View* pView) { m_pView = pView; } + bool RemoveObject(CPDF_PageObject* pPageObj); private: void StartParse(); -- cgit v1.2.3