| Index: xfa/fxfa/app/xfa_textlayout.cpp
|
| diff --git a/xfa/fxfa/app/xfa_textlayout.cpp b/xfa/fxfa/app/xfa_textlayout.cpp
|
| index 345fc272e36cb00a14ef864d5c76869583ef374c..2a7161333edd199c3b3df38f51ba26f58d107aad 100644
|
| --- a/xfa/fxfa/app/xfa_textlayout.cpp
|
| +++ b/xfa/fxfa/app/xfa_textlayout.cpp
|
| @@ -9,6 +9,7 @@
|
| #include <algorithm>
|
|
|
| #include "core/fxcrt/fx_ext.h"
|
| +#include "third_party/base/stl_util.h"
|
| #include "xfa/fde/cfde_path.h"
|
| #include "xfa/fde/css/fde_csscache.h"
|
| #include "xfa/fde/css/fde_cssstyleselector.h"
|
| @@ -1004,10 +1005,9 @@ bool CXFA_TextLayout::DoLayout(int32_t iBlockIndex,
|
| iLineIndex = m_Blocks.ElementAt(iBlockCount - 1) +
|
| m_Blocks.ElementAt(iBlockCount - 2);
|
| }
|
| - if (m_pLoader->m_BlocksHeight.GetSize() > 0) {
|
| - for (int32_t i = 0; i < iBlockIndex; i++) {
|
| - fLinePos -= m_pLoader->m_BlocksHeight.ElementAt(i * 2 + 1);
|
| - }
|
| + if (!m_pLoader->m_BlocksHeight.empty()) {
|
| + for (int32_t i = 0; i < iBlockIndex; i++)
|
| + fLinePos -= m_pLoader->m_BlocksHeight[i * 2 + 1];
|
| }
|
| }
|
| int32_t iCount = m_pLoader->m_lineHeights.GetSize();
|
| @@ -1028,13 +1028,13 @@ bool CXFA_TextLayout::DoLayout(int32_t iBlockIndex,
|
| }
|
| if (i == iLineIndex) {
|
| if (fCalcHeight <= fLinePos) {
|
| - if (m_pLoader->m_BlocksHeight.GetSize() > iBlockIndex * 2 &&
|
| - (m_pLoader->m_BlocksHeight.GetAt(iBlockIndex * 2) ==
|
| - iBlockIndex)) {
|
| - m_pLoader->m_BlocksHeight.SetAt(iBlockIndex * 2 + 1, fCalcHeight);
|
| + if (pdfium::CollectionSize<int32_t>(m_pLoader->m_BlocksHeight) >
|
| + iBlockIndex * 2 &&
|
| + (m_pLoader->m_BlocksHeight[iBlockIndex * 2] == iBlockIndex)) {
|
| + m_pLoader->m_BlocksHeight[iBlockIndex * 2 + 1] = fCalcHeight;
|
| } else {
|
| - m_pLoader->m_BlocksHeight.Add((FX_FLOAT)iBlockIndex);
|
| - m_pLoader->m_BlocksHeight.Add(fCalcHeight);
|
| + m_pLoader->m_BlocksHeight.push_back((FX_FLOAT)iBlockIndex);
|
| + m_pLoader->m_BlocksHeight.push_back(fCalcHeight);
|
| }
|
| }
|
| return true;
|
| @@ -1103,7 +1103,8 @@ bool CXFA_TextLayout::Layout(int32_t iBlock) {
|
| CXFA_Node* pNode = nullptr;
|
| CFX_SizeF szText(m_pLoader->m_fWidth, m_pLoader->m_fHeight);
|
| int32_t iCount = m_Blocks.GetSize();
|
| - int32_t iBlocksHeightCount = m_pLoader->m_BlocksHeight.GetSize();
|
| + int32_t iBlocksHeightCount =
|
| + pdfium::CollectionSize<int32_t>(m_pLoader->m_BlocksHeight);
|
| iBlocksHeightCount /= 2;
|
| if (iBlock < iBlocksHeightCount)
|
| return true;
|
| @@ -1112,7 +1113,7 @@ bool CXFA_TextLayout::Layout(int32_t iBlock) {
|
| m_pBreak.reset(CreateBreak(true));
|
| fLinePos = m_pLoader->m_fStartLineOffset;
|
| for (int32_t i = 0; i < iBlocksHeightCount; i++) {
|
| - fLinePos -= m_pLoader->m_BlocksHeight.ElementAt(i * 2 + 1);
|
| + fLinePos -= m_pLoader->m_BlocksHeight[i * 2 + 1];
|
| }
|
| m_pLoader->m_iChar = 0;
|
| if (iCount > 1)
|
| @@ -1187,17 +1188,17 @@ void CXFA_TextLayout::ItemBlocks(const CFX_RectF& rtText, int32_t iBlockIndex) {
|
| FX_FLOAT fLinePos = m_pLoader->m_fStartLineOffset;
|
| int32_t iLineIndex = 0;
|
| if (iBlockIndex > 0) {
|
| - int32_t iBlockHeightCount = m_pLoader->m_BlocksHeight.GetSize();
|
| + int32_t iBlockHeightCount =
|
| + pdfium::CollectionSize<int32_t>(m_pLoader->m_BlocksHeight);
|
| iBlockHeightCount /= 2;
|
| if (iBlockHeightCount >= iBlockIndex) {
|
| for (int32_t i = 0; i < iBlockIndex; i++) {
|
| - fLinePos -= m_pLoader->m_BlocksHeight.ElementAt(i * 2 + 1);
|
| + fLinePos -= m_pLoader->m_BlocksHeight[i * 2 + 1];
|
| }
|
| } else {
|
| fLinePos = 0;
|
| }
|
| - iLineIndex = m_Blocks.ElementAt(iBlockCount - 1) +
|
| - m_Blocks.ElementAt(iBlockCount - 2);
|
| + iLineIndex = m_Blocks[iBlockCount - 1] + m_Blocks[iBlockCount - 2];
|
| }
|
| int32_t i = 0;
|
| for (i = iLineIndex; i < iCountHeight; i++) {
|
|
|