Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: xfa/fee/fde_txtedtparag.cpp

Issue 1986373002: Remove Release() from IFX_CharIter, use unique_ptrs. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Nit Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fee/fde_txtedtpage.cpp ('k') | xfa/fee/fx_wordbreak/fx_wordbreak.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fee/fde_txtedtparag.h" 7 #include "xfa/fee/fde_txtedtparag.h"
8 8
9 #include "xfa/fee/fde_txtedtbuf.h" 9 #include "xfa/fee/fde_txtedtbuf.h"
10 #include "xfa/fee/fde_txtedtengine.h" 10 #include "xfa/fee/fde_txtedtengine.h"
(...skipping 19 matching lines...) Expand all
30 ((int32_t*)m_lpData)[0]++; 30 ((int32_t*)m_lpData)[0]++;
31 return; 31 return;
32 } 32 }
33 CFX_TxtBreak* pTxtBreak = m_pEngine->GetTextBreak(); 33 CFX_TxtBreak* pTxtBreak = m_pEngine->GetTextBreak();
34 CFDE_TxtEdtBuf* pTxtBuf = m_pEngine->GetTextBuf(); 34 CFDE_TxtEdtBuf* pTxtBuf = m_pEngine->GetTextBuf();
35 const FDE_TXTEDTPARAMS* pParam = m_pEngine->GetEditParams(); 35 const FDE_TXTEDTPARAMS* pParam = m_pEngine->GetEditParams();
36 FX_WCHAR wcAlias = 0; 36 FX_WCHAR wcAlias = 0;
37 if (pParam->dwMode & FDE_TEXTEDITMODE_Password) { 37 if (pParam->dwMode & FDE_TEXTEDITMODE_Password) {
38 wcAlias = m_pEngine->GetAliasChar(); 38 wcAlias = m_pEngine->GetAliasChar();
39 } 39 }
40 IFX_CharIter* pIter = 40 std::unique_ptr<IFX_CharIter> pIter(
41 new CFDE_TxtEdtBufIter((CFDE_TxtEdtBuf*)pTxtBuf, wcAlias); 41 new CFDE_TxtEdtBufIter(static_cast<CFDE_TxtEdtBuf*>(pTxtBuf), wcAlias));
42 pIter->SetAt(m_nCharStart); 42 pIter->SetAt(m_nCharStart);
43 int32_t nEndIndex = m_nCharStart + m_nCharCount; 43 int32_t nEndIndex = m_nCharStart + m_nCharCount;
44 CFX_ArrayTemplate<int32_t> LineBaseArr; 44 CFX_ArrayTemplate<int32_t> LineBaseArr;
45 FX_BOOL bReload = FALSE; 45 FX_BOOL bReload = FALSE;
46 uint32_t dwBreakStatus = FX_TXTBREAK_None; 46 uint32_t dwBreakStatus = FX_TXTBREAK_None;
47 do { 47 do {
48 if (bReload) { 48 if (bReload) {
49 dwBreakStatus = pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak); 49 dwBreakStatus = pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak);
50 } else { 50 } else {
51 FX_WCHAR wAppend = pIter->GetChar(); 51 FX_WCHAR wAppend = pIter->GetChar();
(...skipping 12 matching lines...) Expand all
64 } 64 }
65 LineBaseArr.Add(nTotal); 65 LineBaseArr.Add(nTotal);
66 pTxtBreak->ClearBreakPieces(); 66 pTxtBreak->ClearBreakPieces();
67 } 67 }
68 if ((pIter->GetAt() + 1 == nEndIndex) && 68 if ((pIter->GetAt() + 1 == nEndIndex) &&
69 (dwBreakStatus == FX_TXTBREAK_LineBreak)) { 69 (dwBreakStatus == FX_TXTBREAK_LineBreak)) {
70 bReload = TRUE; 70 bReload = TRUE;
71 pIter->Next(TRUE); 71 pIter->Next(TRUE);
72 } 72 }
73 } while (pIter->Next(FALSE) && (pIter->GetAt() < nEndIndex)); 73 } while (pIter->Next(FALSE) && (pIter->GetAt() < nEndIndex));
74 pIter->Release();
75 pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak); 74 pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak);
76 pTxtBreak->ClearBreakPieces(); 75 pTxtBreak->ClearBreakPieces();
77 int32_t nLineCount = LineBaseArr.GetSize(); 76 int32_t nLineCount = LineBaseArr.GetSize();
78 m_nLineCount = nLineCount; 77 m_nLineCount = nLineCount;
79 if (m_lpData == NULL) { 78 if (m_lpData == NULL) {
80 m_lpData = FX_Alloc(int32_t, nLineCount + 1); 79 m_lpData = FX_Alloc(int32_t, nLineCount + 1);
81 } else { 80 } else {
82 m_lpData = FX_Realloc(int32_t, m_lpData, (nLineCount + 1)); 81 m_lpData = FX_Realloc(int32_t, m_lpData, (nLineCount + 1));
83 } 82 }
84 int32_t* pIntArr = (int32_t*)m_lpData; 83 int32_t* pIntArr = (int32_t*)m_lpData;
(...skipping 10 matching lines...) Expand all
95 ((int32_t*)m_lpData)[0]--; 94 ((int32_t*)m_lpData)[0]--;
96 ASSERT(((int32_t*)m_lpData)[0] >= 0); 95 ASSERT(((int32_t*)m_lpData)[0] >= 0);
97 if (((int32_t*)m_lpData)[0] == 0) { 96 if (((int32_t*)m_lpData)[0] == 0) {
98 FX_Free(m_lpData); 97 FX_Free(m_lpData);
99 m_lpData = NULL; 98 m_lpData = NULL;
100 } 99 }
101 } 100 }
102 void CFDE_TxtEdtParag::CalcLines() { 101 void CFDE_TxtEdtParag::CalcLines() {
103 CFX_TxtBreak* pTxtBreak = m_pEngine->GetTextBreak(); 102 CFX_TxtBreak* pTxtBreak = m_pEngine->GetTextBreak();
104 CFDE_TxtEdtBuf* pTxtBuf = m_pEngine->GetTextBuf(); 103 CFDE_TxtEdtBuf* pTxtBuf = m_pEngine->GetTextBuf();
105 IFX_CharIter* pIter = new CFDE_TxtEdtBufIter((CFDE_TxtEdtBuf*)pTxtBuf);
106 int32_t nCount = 0; 104 int32_t nCount = 0;
107 uint32_t dwBreakStatus = FX_TXTBREAK_None; 105 uint32_t dwBreakStatus = FX_TXTBREAK_None;
108 int32_t nEndIndex = m_nCharStart + m_nCharCount; 106 int32_t nEndIndex = m_nCharStart + m_nCharCount;
107 std::unique_ptr<IFX_CharIter> pIter(
108 new CFDE_TxtEdtBufIter(static_cast<CFDE_TxtEdtBuf*>(pTxtBuf)));
109 pIter->SetAt(m_nCharStart); 109 pIter->SetAt(m_nCharStart);
110 FX_BOOL bReload = FALSE; 110 FX_BOOL bReload = FALSE;
111 do { 111 do {
112 if (bReload) { 112 if (bReload) {
113 dwBreakStatus = pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak); 113 dwBreakStatus = pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak);
114 } else { 114 } else {
115 FX_WCHAR wAppend = pIter->GetChar(); 115 FX_WCHAR wAppend = pIter->GetChar();
116 dwBreakStatus = pTxtBreak->AppendChar(wAppend); 116 dwBreakStatus = pTxtBreak->AppendChar(wAppend);
117 } 117 }
118 if (pIter->GetAt() + 1 == nEndIndex && 118 if (pIter->GetAt() + 1 == nEndIndex &&
119 dwBreakStatus < FX_TXTBREAK_LineBreak) { 119 dwBreakStatus < FX_TXTBREAK_LineBreak) {
120 dwBreakStatus = pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak); 120 dwBreakStatus = pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak);
121 } 121 }
122 if (dwBreakStatus > FX_TXTBREAK_PieceBreak) { 122 if (dwBreakStatus > FX_TXTBREAK_PieceBreak) {
123 nCount++; 123 nCount++;
124 pTxtBreak->ClearBreakPieces(); 124 pTxtBreak->ClearBreakPieces();
125 } 125 }
126 if ((pIter->GetAt() + 1 == nEndIndex) && 126 if ((pIter->GetAt() + 1 == nEndIndex) &&
127 (dwBreakStatus == FX_TXTBREAK_LineBreak)) { 127 (dwBreakStatus == FX_TXTBREAK_LineBreak)) {
128 bReload = TRUE; 128 bReload = TRUE;
129 pIter->Next(TRUE); 129 pIter->Next(TRUE);
130 } 130 }
131 } while (pIter->Next(FALSE) && (pIter->GetAt() < nEndIndex)); 131 } while (pIter->Next(FALSE) && (pIter->GetAt() < nEndIndex));
132 pIter->Release();
133 pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak); 132 pTxtBreak->EndBreak(FX_TXTBREAK_ParagraphBreak);
134 pTxtBreak->ClearBreakPieces(); 133 pTxtBreak->ClearBreakPieces();
135 m_nLineCount = nCount; 134 m_nLineCount = nCount;
136 } 135 }
137 void CFDE_TxtEdtParag::GetLineRange(int32_t nLineIndex, 136 void CFDE_TxtEdtParag::GetLineRange(int32_t nLineIndex,
138 int32_t& nStart, 137 int32_t& nStart,
139 int32_t& nCount) const { 138 int32_t& nCount) const {
140 int32_t* pLineBaseArr = (int32_t*)m_lpData; 139 int32_t* pLineBaseArr = (int32_t*)m_lpData;
141 ASSERT(nLineIndex < m_nLineCount); 140 ASSERT(nLineIndex < m_nLineCount);
142 nStart = m_nCharStart; 141 nStart = m_nCharStart;
143 pLineBaseArr++; 142 pLineBaseArr++;
144 for (int32_t i = 0; i < nLineIndex; i++) { 143 for (int32_t i = 0; i < nLineIndex; i++) {
145 nStart += *pLineBaseArr; 144 nStart += *pLineBaseArr;
146 pLineBaseArr++; 145 pLineBaseArr++;
147 } 146 }
148 nCount = *pLineBaseArr; 147 nCount = *pLineBaseArr;
149 } 148 }
OLDNEW
« no previous file with comments | « xfa/fee/fde_txtedtpage.cpp ('k') | xfa/fee/fx_wordbreak/fx_wordbreak.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698