| Index: core/src/fpdftext/fpdf_text_int.cpp
|
| diff --git a/core/src/fpdftext/fpdf_text_int.cpp b/core/src/fpdftext/fpdf_text_int.cpp
|
| index a0f0c6482230ab2d29ed221030b5de90e8f0db77..b6e39de004d427f8764900e39d3404e9a52fb80a 100644
|
| --- a/core/src/fpdftext/fpdf_text_int.cpp
|
| +++ b/core/src/fpdftext/fpdf_text_int.cpp
|
| @@ -135,15 +135,13 @@ bool CPDF_TextPage::IsControlChar(const PAGECHAR_INFO& charInfo) {
|
| }
|
| }
|
|
|
| -FX_BOOL CPDF_TextPage::ParseTextPage() {
|
| +void CPDF_TextPage::ParseTextPage() {
|
| m_bIsParsed = false;
|
| - if (!m_pPage)
|
| - return FALSE;
|
| -
|
| m_TextBuf.Clear();
|
| m_CharList.clear();
|
| m_pPreTextObj = NULL;
|
| ProcessObject();
|
| +
|
| m_bIsParsed = true;
|
| m_CharIndex.clear();
|
| int nCount = pdfium::CollectionSize<int>(m_CharList);
|
| @@ -185,7 +183,6 @@ FX_BOOL CPDF_TextPage::ParseTextPage() {
|
| if (indexSize % 2) {
|
| m_CharIndex.erase(m_CharIndex.begin() + indexSize - 1);
|
| }
|
| - return TRUE;
|
| }
|
|
|
| int CPDF_TextPage::CountChars() const {
|
| @@ -756,11 +753,8 @@ int CPDF_TextPage::GetWordBreak(int index, int direction) const {
|
| }
|
|
|
| int32_t CPDF_TextPage::FindTextlineFlowDirection() {
|
| - if (!m_pPage) {
|
| - return -1;
|
| - }
|
| - const int32_t nPageWidth = (int32_t)((CPDF_Page*)m_pPage)->GetPageWidth();
|
| - const int32_t nPageHeight = (int32_t)((CPDF_Page*)m_pPage)->GetPageHeight();
|
| + const int32_t nPageWidth = static_cast<int32_t>(m_pPage->GetPageWidth());
|
| + const int32_t nPageHeight = static_cast<int32_t>(m_pPage->GetPageHeight());
|
| std::vector<uint8_t> nHorizontalMask(nPageWidth);
|
| std::vector<uint8_t> nVerticalMask(nPageHeight);
|
| uint8_t* pDataH = nHorizontalMask.data();
|
| @@ -769,13 +763,13 @@ int32_t CPDF_TextPage::FindTextlineFlowDirection() {
|
| FX_FLOAT fLineHeight = 0.0f;
|
| CPDF_PageObject* pPageObj = NULL;
|
| FX_POSITION pos = NULL;
|
| - pos = m_pPage->GetFirstObjectPosition();
|
| + pos = m_pPage->GetPageObjectList()->GetHeadPosition();
|
| if (!pos) {
|
| return -1;
|
| }
|
| while (pos) {
|
| - pPageObj = m_pPage->GetNextObject(pos);
|
| - if (NULL == pPageObj) {
|
| + pPageObj = m_pPage->GetPageObjectList()->GetNextObject(pos);
|
| + if (!pPageObj) {
|
| continue;
|
| }
|
| if (CPDF_PageObject::TEXT != pPageObj->m_Type) {
|
| @@ -854,19 +848,15 @@ int32_t CPDF_TextPage::FindTextlineFlowDirection() {
|
| }
|
|
|
| void CPDF_TextPage::ProcessObject() {
|
| - CPDF_PageObject* pPageObj = NULL;
|
| - if (!m_pPage) {
|
| - return;
|
| - }
|
| - FX_POSITION pos;
|
| - pos = m_pPage->GetFirstObjectPosition();
|
| + FX_POSITION pos = m_pPage->GetPageObjectList()->GetHeadPosition();
|
| if (!pos) {
|
| return;
|
| }
|
| m_TextlineDir = FindTextlineFlowDirection();
|
| int nCount = 0;
|
| while (pos) {
|
| - pPageObj = m_pPage->GetNextObject(pos);
|
| + CPDF_PageObject* pPageObj =
|
| + m_pPage->GetPageObjectList()->GetNextObject(pos);
|
| if (pPageObj) {
|
| if (pPageObj->m_Type == CPDF_PageObject::TEXT) {
|
| CFX_Matrix matrix;
|
| @@ -877,7 +867,6 @@ void CPDF_TextPage::ProcessObject() {
|
| ProcessFormObject((CPDF_FormObject*)pPageObj, formMatrix);
|
| }
|
| }
|
| - pPageObj = NULL;
|
| }
|
| int count = m_LineObj.GetSize();
|
| for (int i = 0; i < count; i++) {
|
| @@ -894,7 +883,7 @@ void CPDF_TextPage::ProcessFormObject(CPDF_FormObject* pFormObj,
|
| if (!pFormObj) {
|
| return;
|
| }
|
| - pos = pFormObj->m_pForm->GetFirstObjectPosition();
|
| + pos = pFormObj->m_pForm->GetPageObjectList()->GetHeadPosition();
|
| if (!pos) {
|
| return;
|
| }
|
| @@ -902,7 +891,7 @@ void CPDF_TextPage::ProcessFormObject(CPDF_FormObject* pFormObj,
|
| curFormMatrix.Copy(pFormObj->m_FormMatrix);
|
| curFormMatrix.Concat(formMatrix);
|
| while (pos) {
|
| - pPageObj = pFormObj->m_pForm->GetNextObject(pos);
|
| + pPageObj = pFormObj->m_pForm->GetPageObjectList()->GetNextObject(pos);
|
| if (pPageObj) {
|
| if (pPageObj->m_Type == CPDF_PageObject::TEXT) {
|
| ProcessTextObject((CPDF_TextObject*)pPageObj, curFormMatrix, pos);
|
| @@ -1851,11 +1840,11 @@ FX_BOOL CPDF_TextPage::IsSameAsPreTextObject(CPDF_TextObject* pTextObj,
|
| }
|
| int i = 0;
|
| if (!ObjPos) {
|
| - ObjPos = m_pPage->GetLastObjectPosition();
|
| + ObjPos = m_pPage->GetPageObjectList()->GetTailPosition();
|
| }
|
| - CPDF_PageObject* pObj = m_pPage->GetPrevObject(ObjPos);
|
| + CPDF_PageObject* pObj = m_pPage->GetPageObjectList()->GetPrevObject(ObjPos);
|
| while (i < 5 && ObjPos) {
|
| - pObj = m_pPage->GetPrevObject(ObjPos);
|
| + pObj = m_pPage->GetPageObjectList()->GetPrevObject(ObjPos);
|
| if (pObj == pTextObj) {
|
| continue;
|
| }
|
|
|