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

Side by Side Diff: xfa/fde/cfde_txtedtengine.cpp

Issue 2031873003: Get rid of NULLs in xfa/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium@nullptr_fpdfsdk
Patch Set: Created 4 years, 6 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/fde/cfde_txtedtengine.h ('k') | xfa/fde/cfde_txtedtpage.cpp » ('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/fde/cfde_txtedtengine.h" 7 #include "xfa/fde/cfde_txtedtengine.h"
8 8
9 #include "xfa/fde/cfde_txtedtbuf.h" 9 #include "xfa/fde/cfde_txtedtbuf.h"
10 #include "xfa/fde/cfde_txtedtbufiter.h" 10 #include "xfa/fde/cfde_txtedtbufiter.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 FXSYS_memset(&m_rtCaret, 0, sizeof(CFX_RectF)); 44 FXSYS_memset(&m_rtCaret, 0, sizeof(CFX_RectF));
45 m_pTxtBuf = new CFDE_TxtEdtBuf(); 45 m_pTxtBuf = new CFDE_TxtEdtBuf();
46 m_bAutoLineEnd = (m_Param.nLineEnd == FDE_TXTEDIT_LINEEND_Auto); 46 m_bAutoLineEnd = (m_Param.nLineEnd == FDE_TXTEDIT_LINEEND_Auto);
47 } 47 }
48 48
49 CFDE_TxtEdtEngine::~CFDE_TxtEdtEngine() { 49 CFDE_TxtEdtEngine::~CFDE_TxtEdtEngine() {
50 delete m_pTxtBuf; 50 delete m_pTxtBuf;
51 delete m_pTextBreak; 51 delete m_pTextBreak;
52 RemoveAllParags(); 52 RemoveAllParags();
53 RemoveAllPages(); 53 RemoveAllPages();
54 m_Param.pEventSink = NULL; 54 m_Param.pEventSink = nullptr;
55 ClearSelection(); 55 ClearSelection();
56 } 56 }
57 57
58 void CFDE_TxtEdtEngine::SetEditParams(const FDE_TXTEDTPARAMS& params) { 58 void CFDE_TxtEdtEngine::SetEditParams(const FDE_TXTEDTPARAMS& params) {
59 if (!m_pTextBreak) 59 if (!m_pTextBreak)
60 m_pTextBreak = new CFX_TxtBreak(FX_TXTBREAKPOLICY_None); 60 m_pTextBreak = new CFX_TxtBreak(FX_TXTBREAKPOLICY_None);
61 61
62 FXSYS_memcpy(&m_Param, &params, sizeof(FDE_TXTEDTPARAMS)); 62 FXSYS_memcpy(&m_Param, &params, sizeof(FDE_TXTEDTPARAMS));
63 m_wLineEnd = params.wLineBreakChar; 63 m_wLineEnd = params.wLineBreakChar;
64 m_bAutoLineEnd = (m_Param.nLineEnd == FDE_TXTEDIT_LINEEND_Auto); 64 m_bAutoLineEnd = (m_Param.nLineEnd == FDE_TXTEDIT_LINEEND_Auto);
65 UpdateTxtBreak(); 65 UpdateTxtBreak();
66 } 66 }
67 67
68 FDE_TXTEDTPARAMS* CFDE_TxtEdtEngine::GetEditParams() { 68 FDE_TXTEDTPARAMS* CFDE_TxtEdtEngine::GetEditParams() {
69 return &m_Param; 69 return &m_Param;
70 } 70 }
71 71
72 int32_t CFDE_TxtEdtEngine::CountPages() const { 72 int32_t CFDE_TxtEdtEngine::CountPages() const {
73 if (m_nLineCount == 0) { 73 if (m_nLineCount == 0) {
74 return 0; 74 return 0;
75 } 75 }
76 return ((m_nLineCount - 1) / m_nPageLineCount) + 1; 76 return ((m_nLineCount - 1) / m_nPageLineCount) + 1;
77 } 77 }
78 78
79 IFDE_TxtEdtPage* CFDE_TxtEdtEngine::GetPage(int32_t nIndex) { 79 IFDE_TxtEdtPage* CFDE_TxtEdtEngine::GetPage(int32_t nIndex) {
80 if (m_PagePtrArray.GetSize() <= nIndex) { 80 if (m_PagePtrArray.GetSize() <= nIndex) {
81 return NULL; 81 return nullptr;
82 } 82 }
83 return (IFDE_TxtEdtPage*)m_PagePtrArray[nIndex]; 83 return (IFDE_TxtEdtPage*)m_PagePtrArray[nIndex];
84 } 84 }
85 85
86 void CFDE_TxtEdtEngine::SetTextByStream(IFX_Stream* pStream) { 86 void CFDE_TxtEdtEngine::SetTextByStream(IFX_Stream* pStream) {
87 ResetEngine(); 87 ResetEngine();
88 int32_t nIndex = 0; 88 int32_t nIndex = 0;
89 if (pStream != NULL && pStream->GetLength()) { 89 if (pStream && pStream->GetLength()) {
90 int32_t nStreamLength = pStream->GetLength(); 90 int32_t nStreamLength = pStream->GetLength();
91 FX_BOOL bValid = TRUE; 91 FX_BOOL bValid = TRUE;
92 if (m_nLimit > 0 && nStreamLength > m_nLimit) { 92 if (m_nLimit > 0 && nStreamLength > m_nLimit) {
93 bValid = FALSE; 93 bValid = FALSE;
94 } 94 }
95 FX_BOOL bPreIsCR = FALSE; 95 FX_BOOL bPreIsCR = FALSE;
96 if (bValid) { 96 if (bValid) {
97 uint8_t bom[4]; 97 uint8_t bom[4];
98 int32_t nPos = pStream->GetBOM(bom); 98 int32_t nPos = pStream->GetBOM(bom);
99 pStream->Seek(FX_STREAMSEEK_Begin, nPos); 99 pStream->Seek(FX_STREAMSEEK_Begin, nPos);
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 int32_t CFDE_TxtEdtEngine::StartLayout() { 661 int32_t CFDE_TxtEdtEngine::StartLayout() {
662 Lock(); 662 Lock();
663 RemoveAllPages(); 663 RemoveAllPages();
664 m_nLayoutPos = 0; 664 m_nLayoutPos = 0;
665 m_nLineCount = 0; 665 m_nLineCount = 0;
666 return 0; 666 return 0;
667 } 667 }
668 668
669 int32_t CFDE_TxtEdtEngine::DoLayout(IFX_Pause* pPause) { 669 int32_t CFDE_TxtEdtEngine::DoLayout(IFX_Pause* pPause) {
670 int32_t nCount = m_ParagPtrArray.GetSize(); 670 int32_t nCount = m_ParagPtrArray.GetSize();
671 CFDE_TxtEdtParag* pParag = NULL; 671 CFDE_TxtEdtParag* pParag = nullptr;
672 int32_t nLineCount = 0; 672 int32_t nLineCount = 0;
673 for (; m_nLayoutPos < nCount; m_nLayoutPos++) { 673 for (; m_nLayoutPos < nCount; m_nLayoutPos++) {
674 pParag = m_ParagPtrArray[m_nLayoutPos]; 674 pParag = m_ParagPtrArray[m_nLayoutPos];
675 pParag->CalcLines(); 675 pParag->CalcLines();
676 nLineCount += pParag->GetLineCount(); 676 nLineCount += pParag->GetLineCount();
677 if ((pPause != NULL) && (nLineCount > m_nPageLineCount) && 677 if (pPause && nLineCount > m_nPageLineCount && pPause->NeedToPauseNow()) {
678 pPause->NeedToPauseNow()) {
679 m_nLineCount += nLineCount; 678 m_nLineCount += nLineCount;
680 return (++m_nLayoutPos * 100) / nCount; 679 return (++m_nLayoutPos * 100) / nCount;
681 } 680 }
682 } 681 }
683 m_nLineCount += nLineCount; 682 m_nLineCount += nLineCount;
684 return 100; 683 return 100;
685 } 684 }
686 685
687 void CFDE_TxtEdtEngine::EndLayout() { 686 void CFDE_TxtEdtEngine::EndLayout() {
688 UpdatePages(); 687 UpdatePages();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 int32_t CFDE_TxtEdtEngine::CountParags() const { 724 int32_t CFDE_TxtEdtEngine::CountParags() const {
726 return m_ParagPtrArray.GetSize(); 725 return m_ParagPtrArray.GetSize();
727 } 726 }
728 727
729 CFDE_TxtEdtParag* CFDE_TxtEdtEngine::GetParag(int32_t nParagIndex) const { 728 CFDE_TxtEdtParag* CFDE_TxtEdtEngine::GetParag(int32_t nParagIndex) const {
730 return m_ParagPtrArray[nParagIndex]; 729 return m_ParagPtrArray[nParagIndex];
731 } 730 }
732 731
733 IFX_CharIter* CFDE_TxtEdtEngine::CreateCharIter() { 732 IFX_CharIter* CFDE_TxtEdtEngine::CreateCharIter() {
734 if (!m_pTxtBuf) { 733 if (!m_pTxtBuf) {
735 return NULL; 734 return nullptr;
736 } 735 }
737 return new CFDE_TxtEdtBufIter((CFDE_TxtEdtBuf*)m_pTxtBuf); 736 return new CFDE_TxtEdtBufIter((CFDE_TxtEdtBuf*)m_pTxtBuf);
738 } 737 }
739 738
740 int32_t CFDE_TxtEdtEngine::Line2Parag(int32_t nStartParag, 739 int32_t CFDE_TxtEdtEngine::Line2Parag(int32_t nStartParag,
741 int32_t nStartLineofParag, 740 int32_t nStartLineofParag,
742 int32_t nLineIndex, 741 int32_t nLineIndex,
743 int32_t& nStartLine) const { 742 int32_t& nStartLine) const {
744 int32_t nLineTotal = nStartLineofParag; 743 int32_t nLineTotal = nStartLineofParag;
745 int32_t nCount = m_ParagPtrArray.GetSize(); 744 int32_t nCount = m_ParagPtrArray.GetSize();
746 CFDE_TxtEdtParag* pParag = NULL; 745 CFDE_TxtEdtParag* pParag = nullptr;
747 int32_t i = nStartParag; 746 int32_t i = nStartParag;
748 for (; i < nCount; i++) { 747 for (; i < nCount; i++) {
749 pParag = m_ParagPtrArray[i]; 748 pParag = m_ParagPtrArray[i];
750 nLineTotal += pParag->GetLineCount(); 749 nLineTotal += pParag->GetLineCount();
751 if (nLineTotal > nLineIndex) { 750 if (nLineTotal > nLineIndex) {
752 break; 751 break;
753 } 752 }
754 } 753 }
755 nStartLine = nLineTotal - pParag->GetLineCount(); 754 nStartLine = nLineTotal - pParag->GetLineCount();
756 return i; 755 return i;
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 for (int32_t i = 0; i < m_PagePtrArray.GetSize(); i++) 988 for (int32_t i = 0; i < m_PagePtrArray.GetSize(); i++)
990 delete m_PagePtrArray[i]; 989 delete m_PagePtrArray[i];
991 m_PagePtrArray.RemoveAll(); 990 m_PagePtrArray.RemoveAll();
992 } 991 }
993 992
994 void CFDE_TxtEdtEngine::UpdateParags() { 993 void CFDE_TxtEdtEngine::UpdateParags() {
995 int32_t nCount = m_ParagPtrArray.GetSize(); 994 int32_t nCount = m_ParagPtrArray.GetSize();
996 if (nCount == 0) { 995 if (nCount == 0) {
997 return; 996 return;
998 } 997 }
999 CFDE_TxtEdtParag* pParag = NULL; 998 CFDE_TxtEdtParag* pParag = nullptr;
1000 int32_t nLineCount = 0; 999 int32_t nLineCount = 0;
1001 int32_t i = 0; 1000 int32_t i = 0;
1002 for (i = 0; i < nCount; i++) { 1001 for (i = 0; i < nCount; i++) {
1003 pParag = m_ParagPtrArray[i]; 1002 pParag = m_ParagPtrArray[i];
1004 if (pParag->GetLineCount() == -1) 1003 if (pParag->GetLineCount() == -1)
1005 pParag->CalcLines(); 1004 pParag->CalcLines();
1006 1005
1007 nLineCount += pParag->GetLineCount(); 1006 nLineCount += pParag->GetLineCount();
1008 } 1007 }
1009 m_nLineCount = nLineCount; 1008 m_nLineCount = nLineCount;
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
1223 IFDE_TxtEdtPage* pPage = m_PagePtrArray[m_nCaretPage]; 1222 IFDE_TxtEdtPage* pPage = m_PagePtrArray[m_nCaretPage];
1224 m_Param.pEventSink->On_PageLoad(this, m_nCaretPage, 0); 1223 m_Param.pEventSink->On_PageLoad(this, m_nCaretPage, 0);
1225 int32_t nPageCharStart = pPage->GetCharStart(); 1224 int32_t nPageCharStart = pPage->GetCharStart();
1226 int32_t nPageCharCount = pPage->GetCharCount(); 1225 int32_t nPageCharCount = pPage->GetCharCount();
1227 if (nIndex >= nPageCharStart && nIndex < nPageCharStart + nPageCharCount) { 1226 if (nIndex >= nPageCharStart && nIndex < nPageCharStart + nPageCharCount) {
1228 m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0); 1227 m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0);
1229 return m_nCaretPage; 1228 return m_nCaretPage;
1230 } 1229 }
1231 m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0); 1230 m_Param.pEventSink->On_PageUnload(this, m_nCaretPage, 0);
1232 } 1231 }
1233 CFDE_TxtEdtParag* pParag = NULL; 1232 CFDE_TxtEdtParag* pParag = nullptr;
1234 int32_t nLineCount = 0; 1233 int32_t nLineCount = 0;
1235 int32_t nParagCount = m_ParagPtrArray.GetSize(); 1234 int32_t nParagCount = m_ParagPtrArray.GetSize();
1236 int32_t i = 0; 1235 int32_t i = 0;
1237 for (i = 0; i < nParagCount; i++) { 1236 for (i = 0; i < nParagCount; i++) {
1238 pParag = m_ParagPtrArray[i]; 1237 pParag = m_ParagPtrArray[i];
1239 if (pParag->GetStartIndex() <= nIndex && 1238 if (pParag->GetStartIndex() <= nIndex &&
1240 nIndex < (pParag->GetStartIndex() + pParag->GetTextLength())) { 1239 nIndex < (pParag->GetStartIndex() + pParag->GetTextLength())) {
1241 break; 1240 break;
1242 } 1241 }
1243 nLineCount += pParag->GetLineCount(); 1242 nLineCount += pParag->GetLineCount();
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
1603 m_SelRangePtrArr.RemoveAt(nCountRange); 1602 m_SelRangePtrArr.RemoveAt(nCountRange);
1604 DeleteRange_DoRecord(nSelStart, nSelCount, TRUE); 1603 DeleteRange_DoRecord(nSelStart, nSelCount, TRUE);
1605 } 1604 }
1606 ClearSelection(); 1605 ClearSelection();
1607 m_Param.pEventSink->On_TextChanged(this, m_ChangeInfo); 1606 m_Param.pEventSink->On_TextChanged(this, m_ChangeInfo);
1608 m_Param.pEventSink->On_SelChanged(this); 1607 m_Param.pEventSink->On_SelChanged(this);
1609 SetCaretPos(nSelStart, TRUE); 1608 SetCaretPos(nSelStart, TRUE);
1610 return; 1609 return;
1611 } 1610 }
1612 } 1611 }
OLDNEW
« no previous file with comments | « xfa/fde/cfde_txtedtengine.h ('k') | xfa/fde/cfde_txtedtpage.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698