Encapsulate |CFX_BreakLine::m_iArabicChars|.
Add appropriate methods to get and set the variables.
Change-Id: I02fa0d49e0bf93b70ec701f91def24b67786ca85
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/59794
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fgas/layout/cfx_breakline.cpp b/xfa/fgas/layout/cfx_breakline.cpp
index 82e12d8..02203c9 100644
--- a/xfa/fgas/layout/cfx_breakline.cpp
+++ b/xfa/fgas/layout/cfx_breakline.cpp
@@ -8,9 +8,9 @@
#include "third_party/base/stl_util.h"
-CFX_BreakLine::CFX_BreakLine() : m_iStart(0), m_iWidth(0), m_iArabicChars(0) {}
+CFX_BreakLine::CFX_BreakLine() = default;
-CFX_BreakLine::~CFX_BreakLine() {}
+CFX_BreakLine::~CFX_BreakLine() = default;
CFX_Char* CFX_BreakLine::GetChar(int32_t index) {
ASSERT(pdfium::IndexInBounds(m_LineChars, index));
@@ -27,3 +27,12 @@
m_iWidth = 0;
m_iArabicChars = 0;
}
+
+void CFX_BreakLine::IncrementArabicCharCount() {
+ ++m_iArabicChars;
+}
+
+void CFX_BreakLine::DecrementArabicCharCount() {
+ ASSERT(m_iArabicChars > 0);
+ --m_iArabicChars;
+}
diff --git a/xfa/fgas/layout/cfx_breakline.h b/xfa/fgas/layout/cfx_breakline.h
index e7635a5..c432b35 100644
--- a/xfa/fgas/layout/cfx_breakline.h
+++ b/xfa/fgas/layout/cfx_breakline.h
@@ -22,11 +22,17 @@
void Clear();
+ void IncrementArabicCharCount();
+ void DecrementArabicCharCount();
+ bool HasArabicChar() const { return m_iArabicChars > 0; }
+
std::vector<CFX_Char> m_LineChars;
std::vector<CFX_BreakPiece> m_LinePieces;
- int32_t m_iStart;
- int32_t m_iWidth;
- int32_t m_iArabicChars;
+ int32_t m_iStart = 0;
+ int32_t m_iWidth = 0;
+
+ private:
+ int32_t m_iArabicChars = 0;
};
#endif // XFA_FGAS_LAYOUT_CFX_BREAKLINE_H_
diff --git a/xfa/fgas/layout/cfx_rtfbreak.cpp b/xfa/fgas/layout/cfx_rtfbreak.cpp
index 81f0e1c..ef0d47e 100644
--- a/xfa/fgas/layout/cfx_rtfbreak.cpp
+++ b/xfa/fgas/layout/cfx_rtfbreak.cpp
@@ -264,7 +264,7 @@
return CFX_BreakType::None;
m_pCurLine->m_iWidth = checked_width.ValueOrDie();
- m_pCurLine->m_iArabicChars++;
+ m_pCurLine->IncrementArabicCharCount();
if (IsGreaterThanLineWidth(m_pCurLine->GetLineEnd()))
return EndBreak(CFX_BreakType::Line);
@@ -422,7 +422,7 @@
CFX_BreakType dwStatus) {
CFX_Char* pTC;
std::vector<CFX_Char>& chars = m_pCurLine->m_LineChars;
- if (!m_bPagination && m_pCurLine->m_iArabicChars > 0) {
+ if (!m_bPagination && m_pCurLine->HasArabicChar()) {
size_t iBidiNum = 0;
for (size_t i = 0; i < m_pCurLine->m_LineChars.size(); ++i) {
pTC = &chars[i];
@@ -713,8 +713,8 @@
for (size_t i = 0; i < pNextLine->m_LineChars.size(); ++i) {
if (pNextLine->m_LineChars[i].GetCharType() >= FX_CHARTYPE::kArabicAlef) {
- pCurLine->m_iArabicChars--;
- pNextLine->m_iArabicChars++;
+ pCurLine->DecrementArabicCharCount();
+ pNextLine->IncrementArabicCharCount();
}
pNextLine->m_LineChars[i].m_dwStatus = CFX_BreakType::None;
}
diff --git a/xfa/fgas/layout/cfx_txtbreak.cpp b/xfa/fgas/layout/cfx_txtbreak.cpp
index 2c60b6e..5849999 100644
--- a/xfa/fgas/layout/cfx_txtbreak.cpp
+++ b/xfa/fgas/layout/cfx_txtbreak.cpp
@@ -186,7 +186,7 @@
pCurChar->m_iCharWidth = iCharWidthValid;
iLineWidth += iCharWidthValid;
- m_pCurLine->m_iArabicChars++;
+ m_pCurLine->IncrementArabicCharCount();
if (!m_bSingleLine && IsGreaterThanLineWidth(iLineWidth))
return EndBreak(CFX_BreakType::Line);
return CFX_BreakType::None;
@@ -316,7 +316,7 @@
FX_TPO tpo;
CFX_Char* pTC;
std::vector<CFX_Char>& chars = m_pCurLine->m_LineChars;
- if (m_pCurLine->m_iArabicChars <= 0) {
+ if (!m_pCurLine->HasArabicChar()) {
tp.m_dwStatus = dwStatus;
tp.m_iStartPos = m_pCurLine->m_iStart;
tp.m_iWidth = m_pCurLine->m_iWidth;
@@ -643,8 +643,8 @@
int32_t iWidth = 0;
for (size_t i = 0; i < pNextLine->m_LineChars.size(); ++i) {
if (pNextLine->m_LineChars[i].GetCharType() >= FX_CHARTYPE::kArabicAlef) {
- pCurLine->m_iArabicChars--;
- pNextLine->m_iArabicChars++;
+ pCurLine->DecrementArabicCharCount();
+ pNextLine->IncrementArabicCharCount();
}
iWidth += std::max(0, pNextLine->m_LineChars[i].m_iCharWidth);
pNextLine->m_LineChars[i].m_dwStatus = CFX_BreakType::None;