Index: xfa/fgas/layout/fgas_textbreak.h |
diff --git a/xfa/fgas/layout/fgas_textbreak.h b/xfa/fgas/layout/fgas_textbreak.h |
index ea86079ac3716891fac6e67d3d23113adf53ed86..19f10500391bd37ba09774788a69287714181c0d 100644 |
--- a/xfa/fgas/layout/fgas_textbreak.h |
+++ b/xfa/fgas/layout/fgas_textbreak.h |
@@ -12,6 +12,7 @@ |
#include "core/fxcrt/fx_ucd.h" |
#include "core/fxge/cfx_renderdevice.h" |
+#include "third_party/base/stl_util.h" |
#include "xfa/fgas/crt/fgas_utils.h" |
#include "xfa/fgas/layout/fgas_unicode.h" |
@@ -117,16 +118,13 @@ class CFX_TxtPiece { |
int32_t GetEndChar() const { return m_iStartChar + m_iChars; } |
CFX_TxtChar* GetCharPtr(int32_t index) const { |
ASSERT(index > -1 && index < m_iChars && m_pChars); |
- return m_pChars->GetDataPtr(m_iStartChar + index); |
+ return &(*m_pChars)[m_iStartChar + index]; |
} |
void GetString(FX_WCHAR* pText) const { |
ASSERT(pText); |
int32_t iEndChar = m_iStartChar + m_iChars; |
- CFX_Char* pChar; |
- for (int32_t i = m_iStartChar; i < iEndChar; i++) { |
- pChar = m_pChars->GetDataPtr(i); |
- *pText++ = (FX_WCHAR)pChar->m_wCharCode; |
- } |
+ for (int32_t i = m_iStartChar; i < iEndChar; i++) |
+ *pText++ = static_cast<FX_WCHAR>((*m_pChars)[i].m_wCharCode); |
} |
void GetString(CFX_WideString& wsText) const { |
FX_WCHAR* pText = wsText.GetBuffer(m_iChars); |
@@ -136,11 +134,8 @@ class CFX_TxtPiece { |
void GetWidths(int32_t* pWidths) const { |
ASSERT(pWidths); |
int32_t iEndChar = m_iStartChar + m_iChars; |
- CFX_Char* pChar; |
- for (int32_t i = m_iStartChar; i < iEndChar; i++) { |
- pChar = m_pChars->GetDataPtr(i); |
- *pWidths++ = pChar->m_iCharWidth; |
- } |
+ for (int32_t i = m_iStartChar; i < iEndChar; i++) |
+ *pWidths++ = (*m_pChars)[i].m_iCharWidth; |
} |
uint32_t m_dwStatus; |
@@ -153,7 +148,7 @@ class CFX_TxtPiece { |
int32_t m_iHorizontalScale; |
int32_t m_iVerticalScale; |
uint32_t m_dwCharStyles; |
- CFX_TxtCharArray* m_pChars; |
+ std::vector<CFX_TxtChar>* m_pChars; |
void* m_pUserData; |
}; |
@@ -164,34 +159,38 @@ class CFX_TxtLine { |
explicit CFX_TxtLine(int32_t iBlockSize); |
~CFX_TxtLine(); |
- int32_t CountChars() const { return m_pLineChars->GetSize(); } |
+ int32_t CountChars() const { |
+ return pdfium::CollectionSize<int32_t>(*m_pLineChars); |
+ } |
+ |
CFX_TxtChar* GetCharPtr(int32_t index) const { |
- ASSERT(index > -1 && index < m_pLineChars->GetSize()); |
- return m_pLineChars->GetDataPtr(index); |
+ ASSERT(index >= 0 && |
+ index < pdfium::CollectionSize<int32_t>(*m_pLineChars)); |
+ return &(*m_pLineChars)[index]; |
} |
+ |
int32_t CountPieces() const { return m_pLinePieces->GetSize(); } |
CFX_TxtPiece* GetPiecePtr(int32_t index) const { |
ASSERT(index > -1 && index < m_pLinePieces->GetSize()); |
return m_pLinePieces->GetPtrAt(index); |
} |
+ |
void GetString(CFX_WideString& wsStr) const { |
- int32_t iCount = m_pLineChars->GetSize(); |
+ int32_t iCount = pdfium::CollectionSize<int32_t>(*m_pLineChars); |
FX_WCHAR* pBuf = wsStr.GetBuffer(iCount); |
- CFX_Char* pChar; |
- for (int32_t i = 0; i < iCount; i++) { |
- pChar = m_pLineChars->GetDataPtr(i); |
- *pBuf++ = (FX_WCHAR)pChar->m_wCharCode; |
- } |
+ for (int32_t i = 0; i < iCount; i++) |
+ *pBuf++ = static_cast<FX_WCHAR>((*m_pLineChars)[i].m_wCharCode); |
wsStr.ReleaseBuffer(iCount); |
} |
+ |
void RemoveAll(bool bLeaveMemory = false) { |
- m_pLineChars->RemoveAll(); |
+ m_pLineChars->clear(); |
m_pLinePieces->RemoveAll(bLeaveMemory); |
m_iWidth = 0; |
m_iArabicChars = 0; |
} |
- std::unique_ptr<CFX_TxtCharArray> m_pLineChars; |
+ std::unique_ptr<std::vector<CFX_TxtChar>> m_pLineChars; |
std::unique_ptr<CFX_TxtPieceArray> m_pLinePieces; |
int32_t m_iStart; |
int32_t m_iWidth; |
@@ -261,7 +260,7 @@ class CFX_TxtBreak { |
void EndBreak_Alignment(CFX_TPOArray& tpos, |
bool bAllChars, |
uint32_t dwStatus); |
- int32_t GetBreakPos(CFX_TxtCharArray& ca, |
+ int32_t GetBreakPos(std::vector<CFX_TxtChar>& ca, |
int32_t& iEndPos, |
bool bAllChars = false, |
bool bOnlyBrk = false); |