diff options
Diffstat (limited to 'core/fpdftext')
-rw-r--r-- | core/fpdftext/cpdf_textpage.cpp | 35 | ||||
-rw-r--r-- | core/fpdftext/cpdf_textpage.h | 3 |
2 files changed, 17 insertions, 21 deletions
diff --git a/core/fpdftext/cpdf_textpage.cpp b/core/fpdftext/cpdf_textpage.cpp index f7654f3e87..9cde4f5026 100644 --- a/core/fpdftext/cpdf_textpage.cpp +++ b/core/fpdftext/cpdf_textpage.cpp @@ -589,10 +589,10 @@ void CPDF_TextPage::ProcessObject() { } } } - for (int i = 0; i < m_LineObj.GetSize(); i++) - ProcessTextObject(m_LineObj.GetAt(i)); + for (const auto& obj : m_LineObj) + ProcessTextObject(obj); - m_LineObj.RemoveAll(); + m_LineObj.clear(); CloseTempLine(); } @@ -740,17 +740,17 @@ void CPDF_TextPage::ProcessTextObject( pTextObj->m_Top); if (FXSYS_fabs(pTextObj->m_Right - pTextObj->m_Left) < 0.01f) return; - int count = m_LineObj.GetSize(); + size_t count = m_LineObj.size(); PDFTEXT_Obj Obj; Obj.m_pTextObj = pTextObj; Obj.m_formMatrix = formMatrix; if (count == 0) { - m_LineObj.Add(Obj); + m_LineObj.push_back(Obj); return; } if (IsSameAsPreTextObject(pTextObj, pObjList, ObjPos)) return; - PDFTEXT_Obj prev_Obj = m_LineObj.GetAt(count - 1); + PDFTEXT_Obj prev_Obj = m_LineObj[count - 1]; CPDF_TextObjectItem item; int nItem = prev_Obj.m_pTextObj->CountItems(); prev_Obj.m_pTextObj->GetItemInfo(nItem - 1, &item); @@ -781,29 +781,26 @@ void CPDF_TextPage::ProcessTextObject( formMatrix.Transform(this_x, this_y); m_DisplayMatrix.Transform(this_x, this_y); if (FXSYS_fabs(this_y - prev_y) > threshold * 2) { - for (int i = 0; i < count; i++) - ProcessTextObject(m_LineObj.GetAt(i)); - m_LineObj.RemoveAll(); - m_LineObj.Add(Obj); + for (size_t i = 0; i < count; i++) + ProcessTextObject(m_LineObj[i]); + m_LineObj.clear(); + m_LineObj.push_back(Obj); return; } - int i = 0; - for (i = count - 1; i >= 0; i--) { - PDFTEXT_Obj prev_text_obj = m_LineObj.GetAt(i); + size_t i; + for (i = count; i > 0; --i) { + PDFTEXT_Obj prev_text_obj = m_LineObj[i - 1]; FX_FLOAT Prev_x = prev_text_obj.m_pTextObj->GetPosX(), Prev_y = prev_text_obj.m_pTextObj->GetPosY(); prev_text_obj.m_formMatrix.Transform(Prev_x, Prev_y); m_DisplayMatrix.Transform(Prev_x, Prev_y); if (this_x >= Prev_x) { - if (i == count - 1) - m_LineObj.Add(Obj); - else - m_LineObj.InsertAt(i + 1, Obj); + m_LineObj.insert(m_LineObj.begin() + i, Obj); break; } } - if (i < 0) - m_LineObj.InsertAt(0, Obj); + if (i == 0) + m_LineObj.insert(m_LineObj.begin(), Obj); } FPDFText_MarkedContent CPDF_TextPage::PreMarkedContent(PDFTEXT_Obj Obj) { diff --git a/core/fpdftext/cpdf_textpage.h b/core/fpdftext/cpdf_textpage.h index aa1fc5bb03..85ee7058b6 100644 --- a/core/fpdftext/cpdf_textpage.h +++ b/core/fpdftext/cpdf_textpage.h @@ -170,9 +170,8 @@ class CPDF_TextPage { CFX_Matrix m_perMatrix; bool m_bIsParsed; CFX_Matrix m_DisplayMatrix; - CFX_ArrayTemplate<FPDF_SEGMENT> m_Segments; std::vector<CFX_FloatRect> m_SelRects; - CFX_ArrayTemplate<PDFTEXT_Obj> m_LineObj; + std::vector<PDFTEXT_Obj> m_LineObj; TextOrientation m_TextlineDir; CFX_FloatRect m_CurlineRect; }; |