summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-08-16 16:34:38 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-08-16 21:16:18 +0000
commita016857bcee1a09e67bd34e895ef639a3946fa91 (patch)
tree1b6405404443a6f70496aaf8e21c31a6b5b3b89b
parent6551362bc0745049a36afe493c984a43e66ea7e4 (diff)
downloadpdfium-a016857bcee1a09e67bd34e895ef639a3946fa91.tar.xz
Simplify CFDE_TxtEdtEngine layout code
The three CFDE_TxtEdtEngine layout methods are always called in sequence. Update to only have a single Layout() method. Simplify the layout code to use existing helpers. Change-Id: I0f4d9714f231ca3cebf43579d215d97bd2fe525a Reviewed-on: https://pdfium-review.googlesource.com/11231 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
-rw-r--r--xfa/fde/cfde_txtedtengine.cpp49
-rw-r--r--xfa/fde/cfde_txtedtengine.h9
-rw-r--r--xfa/fwl/cfwl_edit.cpp5
3 files changed, 12 insertions, 51 deletions
diff --git a/xfa/fde/cfde_txtedtengine.cpp b/xfa/fde/cfde_txtedtengine.cpp
index 86931737c5..063c730b1f 100644
--- a/xfa/fde/cfde_txtedtengine.cpp
+++ b/xfa/fde/cfde_txtedtengine.cpp
@@ -161,7 +161,6 @@ CFDE_TxtEdtEngine::CFDE_TxtEdtEngine()
m_nPageLineCount(20),
m_nLineCount(0),
m_nAnchorPos(-1),
- m_nLayoutPos(0),
m_fCaretPosReserve(0.0),
m_nCaret(0),
m_bBefore(true),
@@ -381,14 +380,6 @@ int32_t CFDE_TxtEdtEngine::MoveCaretPos(FDE_TXTEDTMOVECARET eMoveCaret,
return m_nCaret;
}
-void CFDE_TxtEdtEngine::Lock() {
- m_bLock = true;
-}
-
-void CFDE_TxtEdtEngine::Unlock() {
- m_bLock = false;
-}
-
bool CFDE_TxtEdtEngine::IsLocked() const {
return m_bLock;
}
@@ -702,39 +693,16 @@ bool CFDE_TxtEdtEngine::Undo(const IFDE_TxtEdtDoRecord* pDoRecord) {
return true;
}
-int32_t CFDE_TxtEdtEngine::StartLayout() {
- Lock();
- RemoveAllPages();
- m_nLayoutPos = 0;
- m_nLineCount = 0;
- return 0;
-}
-
-int32_t CFDE_TxtEdtEngine::DoLayout() {
- int32_t nCount = pdfium::CollectionSize<int32_t>(m_ParagPtrArray);
- CFDE_TxtEdtParag* pParag = nullptr;
- int32_t nLineCount = 0;
- for (; m_nLayoutPos < nCount; m_nLayoutPos++) {
- pParag = m_ParagPtrArray[m_nLayoutPos].get();
- pParag->CalcLines();
- nLineCount += pParag->GetLineCount();
- }
- m_nLineCount += nLineCount;
- return 100;
-}
+void CFDE_TxtEdtEngine::Layout() {
+ CFX_AutoRestorer<bool> lock(&m_bLock);
+ m_bLock = true;
-void CFDE_TxtEdtEngine::EndLayout() {
+ RemoveAllPages();
+ UpdateLineCounts();
UpdatePages();
- int32_t nLength = GetTextLength();
- if (m_nCaret > nLength)
- m_nCaret = nLength;
-
- int32_t nIndex = m_nCaret;
- if (!m_bBefore)
- nIndex--;
+ m_nCaret = std::min(m_nCaret, GetTextLength());
m_rtCaret = CFX_RectF(0, 0, 1, m_Param.fFontSize);
- Unlock();
}
CFDE_TxtEdtBuf* CFDE_TxtEdtEngine::GetTextBuf() const {
@@ -1012,14 +980,13 @@ void CFDE_TxtEdtEngine::RemoveAllPages() {
m_PagePtrArray.clear();
}
-void CFDE_TxtEdtEngine::UpdateParags() {
+void CFDE_TxtEdtEngine::UpdateLineCounts() {
if (m_ParagPtrArray.empty())
return;
int32_t nLineCount = 0;
for (auto& pParag : m_ParagPtrArray) {
- if (pParag->GetLineCount() == -1)
- pParag->CalcLines();
+ pParag->CalcLines();
nLineCount += pParag->GetLineCount();
}
m_nLineCount = nLineCount;
diff --git a/xfa/fde/cfde_txtedtengine.h b/xfa/fde/cfde_txtedtengine.h
index c4db3e91b1..4d3490a9f4 100644
--- a/xfa/fde/cfde_txtedtengine.h
+++ b/xfa/fde/cfde_txtedtengine.h
@@ -111,8 +111,6 @@ class CFDE_TxtEdtEngine {
int32_t GetCaretPos() const;
int32_t SetCaretPos(int32_t nIndex, bool bBefore);
int32_t MoveCaretPos(FDE_TXTEDTMOVECARET eMoveCaret, bool bShift, bool bCtrl);
- void Lock();
- void Unlock();
bool IsLocked() const;
int32_t Insert(int32_t nStart, const wchar_t* lpText, int32_t nLength);
@@ -136,9 +134,7 @@ class CFDE_TxtEdtEngine {
bool Redo(const IFDE_TxtEdtDoRecord* pRecord);
bool Undo(const IFDE_TxtEdtDoRecord* pRecord);
- int32_t StartLayout();
- int32_t DoLayout();
- void EndLayout();
+ void Layout();
int32_t CountParags() const;
CFDE_TxtEdtParag* GetParag(int32_t nParagIndex) const;
@@ -195,7 +191,7 @@ class CFDE_TxtEdtEngine {
void RebuildParagraphs();
void RemoveAllParags();
void RemoveAllPages();
- void UpdateParags();
+ void UpdateLineCounts();
void UpdatePages();
void UpdateTxtBreak();
@@ -230,7 +226,6 @@ class CFDE_TxtEdtEngine {
int32_t m_nPageLineCount;
int32_t m_nLineCount;
int32_t m_nAnchorPos;
- int32_t m_nLayoutPos;
float m_fCaretPosReserve;
int32_t m_nCaret;
bool m_bBefore;
diff --git a/xfa/fwl/cfwl_edit.cpp b/xfa/fwl/cfwl_edit.cpp
index eb54375e29..9e38187ef8 100644
--- a/xfa/fwl/cfwl_edit.cpp
+++ b/xfa/fwl/cfwl_edit.cpp
@@ -726,9 +726,8 @@ void CFWL_Edit::UpdateEditLayout() {
if (pPage)
pPage->UnloadPage(nullptr);
- m_EdtEngine.StartLayout();
- m_EdtEngine.DoLayout();
- m_EdtEngine.EndLayout();
+ m_EdtEngine.Layout();
+
pPage = m_EdtEngine.GetPage(0);
if (pPage)
pPage->LoadPage(nullptr);