| Index: xfa/fee/fde_txtedtbuf.cpp
|
| diff --git a/xfa/fee/fde_txtedtbuf.cpp b/xfa/fee/fde_txtedtbuf.cpp
|
| index 4464a0f515d320df73b6c5caa96a276dcb0d63c4..988ca4a5c13aac10f9e1559e23bec5c96d84fe74 100644
|
| --- a/xfa/fee/fde_txtedtbuf.cpp
|
| +++ b/xfa/fee/fde_txtedtbuf.cpp
|
| @@ -8,9 +8,14 @@
|
|
|
| #include <algorithm>
|
|
|
| -#include "xfa/fee/ifde_txtedtbuf.h"
|
| #include "xfa/fee/ifde_txtedtengine.h"
|
|
|
| +namespace {
|
| +
|
| +const int kDefaultChunkSize = 1024;
|
| +
|
| +} // namespace
|
| +
|
| #define FDE_DEFCHUNKCOUNT 2
|
| #define FDE_TXTEDT_FORMATBLOCK_BGN 0xFFF9
|
| #define FDE_TXTEDT_FORMATBLOCK_END 0xFFFB
|
| @@ -34,7 +39,7 @@ FX_BOOL CFDE_TxtEdtBufIter::Next(FX_BOOL bPrev) {
|
| return FALSE;
|
| }
|
| ASSERT(m_nCurChunk < m_pBuf->m_Chunks.GetSize());
|
| - CFDE_TxtEdtBuf::FDE_LPCHUNKHEADER lpChunk = NULL;
|
| + CFDE_TxtEdtBuf::FDE_CHUNKHEADER* lpChunk = nullptr;
|
| if (m_nCurIndex > 0) {
|
| m_nCurIndex--;
|
| } else {
|
| @@ -55,14 +60,14 @@ FX_BOOL CFDE_TxtEdtBufIter::Next(FX_BOOL bPrev) {
|
| return FALSE;
|
| }
|
| ASSERT(m_nCurChunk < m_pBuf->m_Chunks.GetSize());
|
| - CFDE_TxtEdtBuf::FDE_LPCHUNKHEADER lpChunk = m_pBuf->m_Chunks[m_nCurChunk];
|
| + CFDE_TxtEdtBuf::FDE_CHUNKHEADER* lpChunk = m_pBuf->m_Chunks[m_nCurChunk];
|
| if (lpChunk->nUsed != (m_nCurIndex + 1)) {
|
| m_nCurIndex++;
|
| } else {
|
| int32_t nEnd = m_pBuf->m_Chunks.GetSize() - 1;
|
| while (m_nCurChunk < nEnd) {
|
| m_nCurChunk++;
|
| - CFDE_TxtEdtBuf::FDE_LPCHUNKHEADER lpChunkTemp =
|
| + CFDE_TxtEdtBuf::FDE_CHUNKHEADER* lpChunkTemp =
|
| m_pBuf->m_Chunks[m_nCurChunk];
|
| if (lpChunkTemp->nUsed > 0) {
|
| m_nCurIndex = 0;
|
| @@ -103,8 +108,9 @@ IFX_CharIter* CFDE_TxtEdtBufIter::Clone() {
|
| pIter->m_Alias = m_Alias;
|
| return pIter;
|
| }
|
| -CFDE_TxtEdtBuf::CFDE_TxtEdtBuf(int32_t nDefChunkSize)
|
| - : m_nChunkSize(nDefChunkSize),
|
| +
|
| +CFDE_TxtEdtBuf::CFDE_TxtEdtBuf()
|
| + : m_nChunkSize(kDefaultChunkSize),
|
| m_nTotal(0),
|
| m_bChanged(FALSE),
|
| m_pAllocator(NULL) {
|
| @@ -138,8 +144,9 @@ void CFDE_TxtEdtBuf::SetText(const CFX_WideString& wsText) {
|
| ((nTextLength - 1) / m_nChunkSize + 1) - m_Chunks.GetSize();
|
| int32_t i = 0;
|
| for (i = 0; i < nNeedCount; i++) {
|
| - FDE_LPCHUNKHEADER lpChunk = (FDE_LPCHUNKHEADER)m_pAllocator->Alloc(
|
| - sizeof(FDE_CHUNKHEADER) + (m_nChunkSize - 1) * sizeof(FX_WCHAR));
|
| + FDE_CHUNKHEADER* lpChunk =
|
| + static_cast<FDE_CHUNKHEADER*>(m_pAllocator->Alloc(
|
| + sizeof(FDE_CHUNKHEADER) + (m_nChunkSize - 1) * sizeof(FX_WCHAR)));
|
| lpChunk->nUsed = 0;
|
| m_Chunks.Add(lpChunk);
|
| }
|
| @@ -151,7 +158,7 @@ void CFDE_TxtEdtBuf::SetText(const CFX_WideString& wsText) {
|
| if (nLeave < nCopyedLength) {
|
| nCopyedLength = nLeave;
|
| }
|
| - FDE_LPCHUNKHEADER lpChunk = m_Chunks[i];
|
| + FDE_CHUNKHEADER* lpChunk = m_Chunks[i];
|
| FXSYS_memcpy(lpChunk->wChars, lpSrcBuf, nCopyedLength * sizeof(FX_WCHAR));
|
| nLeave -= nCopyedLength;
|
| lpSrcBuf += nCopyedLength;
|
| @@ -165,7 +172,7 @@ void CFDE_TxtEdtBuf::GetText(CFX_WideString& wsText) const {
|
| }
|
| FX_WCHAR CFDE_TxtEdtBuf::GetCharByIndex(int32_t nIndex) const {
|
| ASSERT(nIndex >= 0 && nIndex < GetTextLength());
|
| - FDE_LPCHUNKHEADER pChunkHeader = NULL;
|
| + FDE_CHUNKHEADER* pChunkHeader = nullptr;
|
| int32_t nTotal = 0;
|
| int32_t nCount = m_Chunks.GetSize();
|
| int32_t i = 0;
|
| @@ -188,7 +195,7 @@ void CFDE_TxtEdtBuf::GetRange(CFX_WideString& wsText,
|
| int32_t nCount = m_Chunks.GetSize();
|
| FX_WCHAR* lpDstBuf = wsText.GetBuffer(nLength);
|
| int32_t nChunkIndex = cp.nChunkIndex;
|
| - FDE_LPCHUNKHEADER lpChunkHeader = m_Chunks[nChunkIndex];
|
| + FDE_CHUNKHEADER* lpChunkHeader = m_Chunks[nChunkIndex];
|
| int32_t nCopyLength = lpChunkHeader->nUsed - cp.nCharIndex;
|
| FX_WCHAR* lpSrcBuf = lpChunkHeader->wChars + cp.nCharIndex;
|
| while (nLeave > 0) {
|
| @@ -216,9 +223,10 @@ void CFDE_TxtEdtBuf::Insert(int32_t nPos,
|
| Index2CP(nPos, cp);
|
| int32_t nLengthTemp = nLength;
|
| if (cp.nCharIndex != 0) {
|
| - FDE_LPCHUNKHEADER lpNewChunk = (FDE_LPCHUNKHEADER)m_pAllocator->Alloc(
|
| - sizeof(FDE_CHUNKHEADER) + (m_nChunkSize - 1) * sizeof(FX_WCHAR));
|
| - FDE_LPCHUNKHEADER lpChunk = m_Chunks[cp.nChunkIndex];
|
| + FDE_CHUNKHEADER* lpNewChunk =
|
| + static_cast<FDE_CHUNKHEADER*>(m_pAllocator->Alloc(
|
| + sizeof(FDE_CHUNKHEADER) + (m_nChunkSize - 1) * sizeof(FX_WCHAR)));
|
| + FDE_CHUNKHEADER* lpChunk = m_Chunks[cp.nChunkIndex];
|
| int32_t nCopy = lpChunk->nUsed - cp.nCharIndex;
|
| FXSYS_memcpy(lpNewChunk->wChars, lpChunk->wChars + cp.nCharIndex,
|
| nCopy * sizeof(FX_WCHAR));
|
| @@ -229,7 +237,7 @@ void CFDE_TxtEdtBuf::Insert(int32_t nPos,
|
| cp.nCharIndex = 0;
|
| }
|
| if (cp.nChunkIndex != 0) {
|
| - FDE_LPCHUNKHEADER lpChunk = m_Chunks[cp.nChunkIndex - 1];
|
| + FDE_CHUNKHEADER* lpChunk = m_Chunks[cp.nChunkIndex - 1];
|
| if (lpChunk->nUsed != m_nChunkSize) {
|
| cp.nChunkIndex--;
|
| int32_t nFree = m_nChunkSize - lpChunk->nUsed;
|
| @@ -243,8 +251,9 @@ void CFDE_TxtEdtBuf::Insert(int32_t nPos,
|
| }
|
| }
|
| while (nLengthTemp > 0) {
|
| - FDE_LPCHUNKHEADER lpChunk = (FDE_LPCHUNKHEADER)m_pAllocator->Alloc(
|
| - sizeof(FDE_CHUNKHEADER) + (m_nChunkSize - 1) * sizeof(FX_WCHAR));
|
| + FDE_CHUNKHEADER* lpChunk =
|
| + static_cast<FDE_CHUNKHEADER*>(m_pAllocator->Alloc(
|
| + sizeof(FDE_CHUNKHEADER) + (m_nChunkSize - 1) * sizeof(FX_WCHAR)));
|
| ASSERT(lpChunk);
|
| int32_t nCopy = std::min(nLengthTemp, m_nChunkSize);
|
| FXSYS_memcpy(lpChunk->wChars, lpText, nCopy * sizeof(FX_WCHAR));
|
| @@ -262,7 +271,7 @@ void CFDE_TxtEdtBuf::Delete(int32_t nIndex, int32_t nLength) {
|
| FDE_CHUNKPLACE cpEnd;
|
| Index2CP(nIndex + nLength - 1, cpEnd);
|
| m_nTotal -= nLength;
|
| - FDE_LPCHUNKHEADER lpChunk = m_Chunks[cpEnd.nChunkIndex];
|
| + FDE_CHUNKHEADER* lpChunk = m_Chunks[cpEnd.nChunkIndex];
|
| int32_t nFirstPart = cpEnd.nCharIndex + 1;
|
| int32_t nMovePart = lpChunk->nUsed - nFirstPart;
|
| if (nMovePart != 0) {
|
| @@ -316,7 +325,7 @@ FX_BOOL CFDE_TxtEdtBuf::Optimize(IFX_Pause* pPause) {
|
| }
|
| int32_t i = 0;
|
| for (; i < nCount; i++) {
|
| - FDE_LPCHUNKHEADER lpChunk = m_Chunks[i];
|
| + FDE_CHUNKHEADER* lpChunk = m_Chunks[i];
|
| if (lpChunk->nUsed == 0) {
|
| m_pAllocator->Free(lpChunk);
|
| m_Chunks.RemoveAt(i);
|
| @@ -324,11 +333,11 @@ FX_BOOL CFDE_TxtEdtBuf::Optimize(IFX_Pause* pPause) {
|
| --nCount;
|
| }
|
| }
|
| - if (pPause != NULL && pPause->NeedToPauseNow()) {
|
| + if (pPause && pPause->NeedToPauseNow())
|
| return FALSE;
|
| - }
|
| - FDE_LPCHUNKHEADER lpPreChunk = m_Chunks[0];
|
| - FDE_LPCHUNKHEADER lpCurChunk = NULL;
|
| +
|
| + FDE_CHUNKHEADER* lpPreChunk = m_Chunks[0];
|
| + FDE_CHUNKHEADER* lpCurChunk = nullptr;
|
| for (i = 1; i < nCount; i++) {
|
| lpCurChunk = m_Chunks[i];
|
| if (lpPreChunk->nUsed + lpCurChunk->nUsed <= m_nChunkSize) {
|
| @@ -364,8 +373,8 @@ void CFDE_TxtEdtBuf::ResetChunkBuffer(int32_t nDefChunkCount,
|
| m_pAllocator =
|
| FX_CreateAllocator(FX_ALLOCTYPE_Fixed, nDefChunkCount, nChunkLength);
|
| ASSERT(m_pAllocator);
|
| - FDE_LPCHUNKHEADER lpChunkHeader =
|
| - (FDE_LPCHUNKHEADER)m_pAllocator->Alloc(nChunkLength);
|
| + FDE_CHUNKHEADER* lpChunkHeader =
|
| + static_cast<FDE_CHUNKHEADER*>(m_pAllocator->Alloc(nChunkLength));
|
| ASSERT(lpChunkHeader);
|
| lpChunkHeader->nUsed = 0;
|
| m_Chunks.Add(lpChunkHeader);
|
|
|