Index: xfa/fgas/layout/fgas_textbreak.cpp |
diff --git a/xfa/fgas/layout/fgas_textbreak.cpp b/xfa/fgas/layout/fgas_textbreak.cpp |
index 8ba3ae818deb8777b36b506bfb5376ddb66e153e..56850c741c827723b004836b0b4d789ad4227b52 100644 |
--- a/xfa/fgas/layout/fgas_textbreak.cpp |
+++ b/xfa/fgas/layout/fgas_textbreak.cpp |
@@ -15,6 +15,24 @@ |
#include "xfa/fgas/layout/fgas_linebreak.h" |
#include "xfa/fgas/layout/fgas_unicode.h" |
+namespace { |
+ |
+typedef uint32_t (CFX_TxtBreak::*FX_TxtBreak_LPFAppendChar)( |
+ CFX_TxtChar* pCurChar, |
+ int32_t iRotation); |
+const FX_TxtBreak_LPFAppendChar g_FX_TxtBreak_lpfAppendChar[16] = { |
+ &CFX_TxtBreak::AppendChar_Others, &CFX_TxtBreak::AppendChar_Tab, |
+ &CFX_TxtBreak::AppendChar_Others, &CFX_TxtBreak::AppendChar_Control, |
+ &CFX_TxtBreak::AppendChar_Combination, &CFX_TxtBreak::AppendChar_Others, |
+ &CFX_TxtBreak::AppendChar_Others, &CFX_TxtBreak::AppendChar_Arabic, |
+ &CFX_TxtBreak::AppendChar_Arabic, &CFX_TxtBreak::AppendChar_Arabic, |
+ &CFX_TxtBreak::AppendChar_Arabic, &CFX_TxtBreak::AppendChar_Arabic, |
+ &CFX_TxtBreak::AppendChar_Arabic, &CFX_TxtBreak::AppendChar_Others, |
+ &CFX_TxtBreak::AppendChar_Others, &CFX_TxtBreak::AppendChar_Others, |
+}; |
+ |
+} // namespace |
+ |
CFX_TxtBreak::CFX_TxtBreak(uint32_t dwPolicies) |
: m_dwPolicies(dwPolicies), |
m_iLineWidth(2000000), |
@@ -212,7 +230,7 @@ void CFX_TxtBreak::SetBreakStatus() { |
if (iCount < 1) { |
return; |
} |
- CFX_TxtChar* pTC = (CFX_TxtChar*)m_pCurLine->GetCharPtr(iCount - 1); |
+ CFX_TxtChar* pTC = m_pCurLine->GetCharPtr(iCount - 1); |
if (pTC->m_dwStatus == 0) { |
pTC->m_dwStatus = FX_TXTBREAK_PieceBreak; |
} |
@@ -311,10 +329,11 @@ void CFX_TxtBreak::ResetArabicContext() { |
m_bArabicComma = m_bArabicNumber; |
ResetContextCharStyles(); |
} |
-void CFX_TxtBreak::AppendChar_PageLoad(CFX_Char* pCurChar, uint32_t dwProps) { |
+void CFX_TxtBreak::AppendChar_PageLoad(CFX_TxtChar* pCurChar, |
+ uint32_t dwProps) { |
if (!m_bPagination) { |
- ((CFX_TxtChar*)pCurChar)->m_dwStatus = 0; |
- ((CFX_TxtChar*)pCurChar)->m_pUserData = m_pUserData; |
+ pCurChar->m_dwStatus = 0; |
+ pCurChar->m_pUserData = m_pUserData; |
} |
if (m_bArabicContext || m_bArabicShapes) { |
int32_t iBidiCls = (dwProps & FX_BIDICLASSBITSMASK) >> FX_BIDICLASSBITS; |
@@ -330,7 +349,7 @@ void CFX_TxtBreak::AppendChar_PageLoad(CFX_Char* pCurChar, uint32_t dwProps) { |
} |
ResetArabicContext(); |
if (!m_bPagination) { |
- CFX_TxtChar* pLastChar = (CFX_TxtChar*)GetLastChar(1, FALSE); |
+ CFX_TxtChar* pLastChar = GetLastChar(1, FALSE); |
if (pLastChar != NULL && pLastChar->m_dwStatus < 1) { |
pLastChar->m_dwStatus = FX_TXTBREAK_PieceBreak; |
} |
@@ -339,13 +358,11 @@ void CFX_TxtBreak::AppendChar_PageLoad(CFX_Char* pCurChar, uint32_t dwProps) { |
} |
pCurChar->m_dwCharStyles = m_dwContextCharStyles; |
} |
-uint32_t CFX_TxtBreak::AppendChar_Combination(CFX_Char* pCurChar, |
+uint32_t CFX_TxtBreak::AppendChar_Combination(CFX_TxtChar* pCurChar, |
int32_t iRotation) { |
- ASSERT(pCurChar != NULL); |
FX_WCHAR wch = pCurChar->m_wCharCode; |
FX_WCHAR wForm; |
int32_t iCharWidth = 0; |
- CFX_Char* pLastChar; |
pCurChar->m_iCharWidth = -1; |
if (m_bCombText) { |
iCharWidth = m_iCombWidth; |
@@ -355,10 +372,9 @@ uint32_t CFX_TxtBreak::AppendChar_Combination(CFX_Char* pCurChar, |
} else { |
wForm = wch; |
if (!m_bPagination) { |
- pLastChar = GetLastChar(0, FALSE); |
- if (pLastChar != NULL && |
- (((CFX_TxtChar*)pLastChar)->m_dwCharStyles & |
- FX_TXTCHARSTYLE_ArabicShadda) == 0) { |
+ CFX_TxtChar* pLastChar = GetLastChar(0, FALSE); |
+ if (pLastChar && |
+ (pLastChar->m_dwCharStyles & FX_TXTCHARSTYLE_ArabicShadda) == 0) { |
FX_BOOL bShadda = FALSE; |
if (wch == 0x0651) { |
FX_WCHAR wLast = pLastChar->m_wCharCode; |
@@ -373,11 +389,9 @@ uint32_t CFX_TxtBreak::AppendChar_Combination(CFX_Char* pCurChar, |
} |
} |
if (bShadda) { |
- ((CFX_TxtChar*)pLastChar)->m_dwCharStyles |= |
- FX_TXTCHARSTYLE_ArabicShadda; |
- ((CFX_TxtChar*)pLastChar)->m_iCharWidth = 0; |
- ((CFX_TxtChar*)pCurChar)->m_dwCharStyles |= |
- FX_TXTCHARSTYLE_ArabicShadda; |
+ pLastChar->m_dwCharStyles |= FX_TXTCHARSTYLE_ArabicShadda; |
+ pLastChar->m_iCharWidth = 0; |
+ pCurChar->m_dwCharStyles |= FX_TXTCHARSTYLE_ArabicShadda; |
} |
} |
} |
@@ -391,7 +405,8 @@ uint32_t CFX_TxtBreak::AppendChar_Combination(CFX_Char* pCurChar, |
pCurChar->m_iCharWidth = -iCharWidth; |
return FX_TXTBREAK_None; |
} |
-uint32_t CFX_TxtBreak::AppendChar_Tab(CFX_Char* pCurChar, int32_t iRotation) { |
+uint32_t CFX_TxtBreak::AppendChar_Tab(CFX_TxtChar* pCurChar, |
+ int32_t iRotation) { |
m_eCharType = FX_CHARTYPE_Tab; |
if ((m_dwLayoutStyles & FX_TXTLAYOUTSTYLE_ExpandTab) == 0) { |
return FX_TXTBREAK_None; |
@@ -418,7 +433,7 @@ uint32_t CFX_TxtBreak::AppendChar_Tab(CFX_Char* pCurChar, int32_t iRotation) { |
} |
return FX_TXTBREAK_None; |
} |
-uint32_t CFX_TxtBreak::AppendChar_Control(CFX_Char* pCurChar, |
+uint32_t CFX_TxtBreak::AppendChar_Control(CFX_TxtChar* pCurChar, |
int32_t iRotation) { |
m_eCharType = FX_CHARTYPE_Control; |
uint32_t dwRet = FX_TXTBREAK_None; |
@@ -447,7 +462,7 @@ uint32_t CFX_TxtBreak::AppendChar_Control(CFX_Char* pCurChar, |
} |
return dwRet; |
} |
-uint32_t CFX_TxtBreak::AppendChar_Arabic(CFX_Char* pCurChar, |
+uint32_t CFX_TxtBreak::AppendChar_Arabic(CFX_TxtChar* pCurChar, |
int32_t iRotation) { |
FX_CHARTYPE chartype = pCurChar->GetCharType(); |
int32_t& iLineWidth = m_pCurLine->m_iWidth; |
@@ -510,7 +525,7 @@ uint32_t CFX_TxtBreak::AppendChar_Arabic(CFX_Char* pCurChar, |
} |
return FX_TXTBREAK_None; |
} |
-uint32_t CFX_TxtBreak::AppendChar_Others(CFX_Char* pCurChar, |
+uint32_t CFX_TxtBreak::AppendChar_Others(CFX_TxtChar* pCurChar, |
int32_t iRotation) { |
uint32_t dwProps = pCurChar->m_dwCharProps; |
FX_CHARTYPE chartype = pCurChar->GetCharType(); |
@@ -553,18 +568,7 @@ uint32_t CFX_TxtBreak::AppendChar_Others(CFX_Char* pCurChar, |
} |
return FX_TXTBREAK_None; |
} |
-typedef uint32_t (CFX_TxtBreak::*FX_TxtBreak_LPFAppendChar)(CFX_Char* pCurChar, |
- int32_t iRotation); |
-static const FX_TxtBreak_LPFAppendChar g_FX_TxtBreak_lpfAppendChar[16] = { |
- &CFX_TxtBreak::AppendChar_Others, &CFX_TxtBreak::AppendChar_Tab, |
- &CFX_TxtBreak::AppendChar_Others, &CFX_TxtBreak::AppendChar_Control, |
- &CFX_TxtBreak::AppendChar_Combination, &CFX_TxtBreak::AppendChar_Others, |
- &CFX_TxtBreak::AppendChar_Others, &CFX_TxtBreak::AppendChar_Arabic, |
- &CFX_TxtBreak::AppendChar_Arabic, &CFX_TxtBreak::AppendChar_Arabic, |
- &CFX_TxtBreak::AppendChar_Arabic, &CFX_TxtBreak::AppendChar_Arabic, |
- &CFX_TxtBreak::AppendChar_Arabic, &CFX_TxtBreak::AppendChar_Others, |
- &CFX_TxtBreak::AppendChar_Others, &CFX_TxtBreak::AppendChar_Others, |
-}; |
+ |
uint32_t CFX_TxtBreak::AppendChar(FX_WCHAR wch) { |
uint32_t dwProps = kTextLayoutCodeProperties[(uint16_t)wch]; |
FX_CHARTYPE chartype = GetCharTypeFromProp(dwProps); |