From 778e59ed40ed31f6176a68253b694acd31f640c9 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Tue, 5 Jun 2018 19:24:42 +0000 Subject: Tidy parser lifecycle state machine in CPDF_PageObjectHolder. Only update state in CPDF_PageObjectHolder itself. Make more data private. Remove CPDF_Page::GetPageBBox() as exact duplicate of CPDF_PageObjectHolder::GetBBox(). Change-Id: I083ec33f61a1490e7a5e673c9787751af15a6cd1 Reviewed-on: https://pdfium-review.googlesource.com/33810 Reviewed-by: dsinclair Commit-Queue: Tom Sepez --- core/fpdfapi/page/cpdf_pageobjectholder.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'core/fpdfapi/page/cpdf_pageobjectholder.cpp') diff --git a/core/fpdfapi/page/cpdf_pageobjectholder.cpp b/core/fpdfapi/page/cpdf_pageobjectholder.cpp index 4d4fc56ac2..81ee6e2e11 100644 --- a/core/fpdfapi/page/cpdf_pageobjectholder.cpp +++ b/core/fpdfapi/page/cpdf_pageobjectholder.cpp @@ -29,18 +29,23 @@ bool CPDF_PageObjectHolder::IsPage() const { return false; } +void CPDF_PageObjectHolder::StartParse( + std::unique_ptr pParser) { + ASSERT(m_ParseState == ParseState::kNotParsed); + m_pParser = std::move(pParser); + m_ParseState = ParseState::kParsing; +} + void CPDF_PageObjectHolder::ContinueParse(PauseIndicatorIface* pPause) { - if (!m_pParser) { - m_ParseState = CONTENT_PARSED; + if (m_ParseState == ParseState::kParsed) return; - } + ASSERT(m_ParseState == ParseState::kParsing); if (m_pParser->Continue(pPause)) return; - m_ParseState = CONTENT_PARSED; + m_ParseState = ParseState::kParsed; m_pDocument->IncrementParsedPageCount(); - if (m_pParser->GetCurStates()) m_LastCTM = m_pParser->GetCurStates()->m_CTM; -- cgit v1.2.3