Index: core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
index 3d12ee9c82ff5f3788aac3bee9bf45b897bad7fe..ebd4d83310ad65ca88bf1dac3a4a18774f7be88c 100644 |
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
@@ -997,17 +997,18 @@ void CPDF_ContentParser::Start(CPDF_Form* pForm, CPDF_AllStates* pGraphicStates, |
} |
} |
CPDF_Dictionary* pResources = pForm->m_pFormDict->GetDict(FX_BSTRC("Resources")); |
- m_pParser = new CPDF_StreamContentParser; |
- m_pParser->Initialize(); |
- m_pParser->PrepareParse(pForm->m_pDocument, pForm->m_pPageResources, pForm->m_pResources, pParentMatrix, pForm, |
- pResources, &form_bbox, pOptions, pGraphicStates, level); |
- m_pParser->m_pCurStates->m_CTM = form_matrix; |
- m_pParser->m_pCurStates->m_ParentMatrix = form_matrix; |
+ m_pParser = new CPDF_StreamContentParser( |
+ pForm->m_pDocument, pForm->m_pPageResources, pForm->m_pResources, |
+ pParentMatrix, pForm, pResources, &form_bbox, pOptions, pGraphicStates, |
+ level); |
+ |
+ m_pParser->GetCurStates()->m_CTM = form_matrix; |
+ m_pParser->GetCurStates()->m_ParentMatrix = form_matrix; |
if (ClipPath.NotNull()) { |
- m_pParser->m_pCurStates->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING, TRUE); |
+ m_pParser->GetCurStates()->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING, TRUE); |
} |
if (pForm->m_Transparency & PDFTRANS_GROUP) { |
- CPDF_GeneralStateData* pData = m_pParser->m_pCurStates->m_GeneralState.GetModify(); |
+ CPDF_GeneralStateData* pData = m_pParser->GetCurStates()->m_GeneralState.GetModify(); |
pData->m_BlendType = FXDIB_BLEND_NORMAL; |
pData->m_StrokeAlpha = 1.0f; |
pData->m_FillAlpha = 1.0f; |
@@ -1068,18 +1069,18 @@ void CPDF_ContentParser::Continue(IFX_Pause* pPause) |
} |
} |
if (m_InternalStage == PAGEPARSE_STAGE_PARSE) { |
- if (m_pParser == NULL) { |
- m_pParser = new CPDF_StreamContentParser; |
- m_pParser->Initialize(); |
- m_pParser->PrepareParse(m_pObjects->m_pDocument, m_pObjects->m_pPageResources, NULL, NULL, m_pObjects, |
- m_pObjects->m_pResources, &m_pObjects->m_BBox, &m_Options, NULL, 0); |
- m_pParser->m_pCurStates->m_ColorState.GetModify()->Default(); |
+ if (!m_pParser) { |
+ m_pParser = new CPDF_StreamContentParser( |
+ m_pObjects->m_pDocument, m_pObjects->m_pPageResources, |
+ nullptr, nullptr, m_pObjects, m_pObjects->m_pResources, |
+ &m_pObjects->m_BBox, &m_Options, nullptr, 0); |
+ m_pParser->GetCurStates()->m_ColorState.GetModify()->Default(); |
} |
if (m_CurrentOffset >= m_Size) { |
m_InternalStage = PAGEPARSE_STAGE_CHECKCLIP; |
} else { |
m_CurrentOffset += m_pParser->Parse(m_pData + m_CurrentOffset, m_Size - m_CurrentOffset, PARSE_STEP_LIMIT); |
- if (m_pParser->m_bAbort) { |
+ if (m_pParser->ShouldAbort()) { |
m_InternalStage = PAGEPARSE_STAGE_CHECKCLIP; |
continue; |
} |
@@ -1087,12 +1088,12 @@ void CPDF_ContentParser::Continue(IFX_Pause* pPause) |
} |
if (m_InternalStage == PAGEPARSE_STAGE_CHECKCLIP) { |
if (m_pType3Char) { |
- m_pType3Char->m_bColored = m_pParser->m_bColored; |
- m_pType3Char->m_Width = FXSYS_round(m_pParser->m_Type3Data[0] * 1000); |
- m_pType3Char->m_BBox.left = FXSYS_round(m_pParser->m_Type3Data[2] * 1000); |
- m_pType3Char->m_BBox.bottom = FXSYS_round(m_pParser->m_Type3Data[3] * 1000); |
- m_pType3Char->m_BBox.right = FXSYS_round(m_pParser->m_Type3Data[4] * 1000); |
- m_pType3Char->m_BBox.top = FXSYS_round(m_pParser->m_Type3Data[5] * 1000); |
+ m_pType3Char->m_bColored = m_pParser->IsColored(); |
+ m_pType3Char->m_Width = FXSYS_round(m_pParser->GetType3Data()[0] * 1000); |
+ m_pType3Char->m_BBox.left = FXSYS_round(m_pParser->GetType3Data()[2] * 1000); |
+ m_pType3Char->m_BBox.bottom = FXSYS_round(m_pParser->GetType3Data()[3] * 1000); |
+ m_pType3Char->m_BBox.right = FXSYS_round(m_pParser->GetType3Data()[4] * 1000); |
+ m_pType3Char->m_BBox.top = FXSYS_round(m_pParser->GetType3Data()[5] * 1000); |
} |
FX_POSITION pos = m_pObjects->m_ObjectList.GetHeadPosition(); |
while (pos) { |