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

Side by Side Diff: xfa/fgas/layout/fgas_rtfbreak.cpp

Issue 1830323006: Remove FX_DWORD from XFA. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 9 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/fgas/layout/fgas_linebreak.cpp ('k') | xfa/fgas/layout/fgas_textbreak.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/fgas/layout/fgas_rtfbreak.h" 7 #include "xfa/fgas/layout/fgas_rtfbreak.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 CFX_RTFCharArray m_LineChars; 61 CFX_RTFCharArray m_LineChars;
62 CFX_RTFPieceArray m_LinePieces; 62 CFX_RTFPieceArray m_LinePieces;
63 int32_t m_iStart; 63 int32_t m_iStart;
64 int32_t m_iWidth; 64 int32_t m_iWidth;
65 int32_t m_iArabicChars; 65 int32_t m_iArabicChars;
66 int32_t m_iMBCSChars; 66 int32_t m_iMBCSChars;
67 }; 67 };
68 68
69 class CFX_RTFBreak : public IFX_RTFBreak { 69 class CFX_RTFBreak : public IFX_RTFBreak {
70 public: 70 public:
71 CFX_RTFBreak(FX_DWORD dwPolicies); 71 CFX_RTFBreak(uint32_t dwPolicies);
72 ~CFX_RTFBreak(); 72 ~CFX_RTFBreak();
73 void Release() override { delete this; } 73 void Release() override { delete this; }
74 void SetLineBoundary(FX_FLOAT fLineStart, FX_FLOAT fLineEnd) override; 74 void SetLineBoundary(FX_FLOAT fLineStart, FX_FLOAT fLineEnd) override;
75 void SetLineStartPos(FX_FLOAT fLinePos) override; 75 void SetLineStartPos(FX_FLOAT fLinePos) override;
76 FX_DWORD GetLayoutStyles() const override { return m_dwLayoutStyles; } 76 uint32_t GetLayoutStyles() const override { return m_dwLayoutStyles; }
77 void SetLayoutStyles(FX_DWORD dwLayoutStyles) override; 77 void SetLayoutStyles(uint32_t dwLayoutStyles) override;
78 void SetFont(IFX_Font* pFont) override; 78 void SetFont(IFX_Font* pFont) override;
79 void SetFontSize(FX_FLOAT fFontSize) override; 79 void SetFontSize(FX_FLOAT fFontSize) override;
80 void SetTabWidth(FX_FLOAT fTabWidth) override; 80 void SetTabWidth(FX_FLOAT fTabWidth) override;
81 void AddPositionedTab(FX_FLOAT fTabPos) override; 81 void AddPositionedTab(FX_FLOAT fTabPos) override;
82 void SetPositionedTabs(const CFX_FloatArray& tabs) override; 82 void SetPositionedTabs(const CFX_FloatArray& tabs) override;
83 void ClearPositionedTabs() override; 83 void ClearPositionedTabs() override;
84 void SetDefaultChar(FX_WCHAR wch) override; 84 void SetDefaultChar(FX_WCHAR wch) override;
85 void SetLineBreakChar(FX_WCHAR wch) override; 85 void SetLineBreakChar(FX_WCHAR wch) override;
86 void SetLineBreakTolerance(FX_FLOAT fTolerance) override; 86 void SetLineBreakTolerance(FX_FLOAT fTolerance) override;
87 void SetHorizontalScale(int32_t iScale) override; 87 void SetHorizontalScale(int32_t iScale) override;
88 void SetVerticalScale(int32_t iScale) override; 88 void SetVerticalScale(int32_t iScale) override;
89 void SetCharRotation(int32_t iCharRotation) override; 89 void SetCharRotation(int32_t iCharRotation) override;
90 void SetCharSpace(FX_FLOAT fCharSpace) override; 90 void SetCharSpace(FX_FLOAT fCharSpace) override;
91 void SetWordSpace(FX_BOOL bDefault, FX_FLOAT fWordSpace) override; 91 void SetWordSpace(FX_BOOL bDefault, FX_FLOAT fWordSpace) override;
92 void SetReadingOrder(FX_BOOL bRTL = FALSE) override; 92 void SetReadingOrder(FX_BOOL bRTL = FALSE) override;
93 void SetAlignment(int32_t iAlignment = FX_RTFLINEALIGNMENT_Left) override; 93 void SetAlignment(int32_t iAlignment = FX_RTFLINEALIGNMENT_Left) override;
94 void SetUserData(IFX_Unknown* pUserData) override; 94 void SetUserData(IFX_Unknown* pUserData) override;
95 FX_DWORD AppendChar(FX_WCHAR wch) override; 95 uint32_t AppendChar(FX_WCHAR wch) override;
96 FX_DWORD EndBreak(FX_DWORD dwStatus = FX_RTFBREAK_PieceBreak) override; 96 uint32_t EndBreak(uint32_t dwStatus = FX_RTFBREAK_PieceBreak) override;
97 int32_t CountBreakPieces() const override; 97 int32_t CountBreakPieces() const override;
98 const CFX_RTFPiece* GetBreakPiece(int32_t index) const override; 98 const CFX_RTFPiece* GetBreakPiece(int32_t index) const override;
99 void GetLineRect(CFX_RectF& rect) const override; 99 void GetLineRect(CFX_RectF& rect) const override;
100 void ClearBreakPieces() override; 100 void ClearBreakPieces() override;
101 void Reset() override; 101 void Reset() override;
102 int32_t GetDisplayPos( 102 int32_t GetDisplayPos(
103 const FX_RTFTEXTOBJ* pText, 103 const FX_RTFTEXTOBJ* pText,
104 FXTEXT_CHARPOS* pCharPos, 104 FXTEXT_CHARPOS* pCharPos,
105 FX_BOOL bCharCode = FALSE, 105 FX_BOOL bCharCode = FALSE,
106 CFX_WideString* pWSForms = NULL, 106 CFX_WideString* pWSForms = NULL,
107 FX_AdjustCharDisplayPos pAdjustPos = NULL) const override; 107 FX_AdjustCharDisplayPos pAdjustPos = NULL) const override;
108 int32_t GetCharRects(const FX_RTFTEXTOBJ* pText, 108 int32_t GetCharRects(const FX_RTFTEXTOBJ* pText,
109 CFX_RectFArray& rtArray, 109 CFX_RectFArray& rtArray,
110 FX_BOOL bCharBBox = FALSE) const override; 110 FX_BOOL bCharBBox = FALSE) const override;
111 FX_DWORD AppendChar_CharCode(FX_WCHAR wch); 111 uint32_t AppendChar_CharCode(FX_WCHAR wch);
112 FX_DWORD AppendChar_Combination(CFX_RTFChar* pCurChar, int32_t iRotation); 112 uint32_t AppendChar_Combination(CFX_RTFChar* pCurChar, int32_t iRotation);
113 FX_DWORD AppendChar_Tab(CFX_RTFChar* pCurChar, int32_t iRotation); 113 uint32_t AppendChar_Tab(CFX_RTFChar* pCurChar, int32_t iRotation);
114 FX_DWORD AppendChar_Control(CFX_RTFChar* pCurChar, int32_t iRotation); 114 uint32_t AppendChar_Control(CFX_RTFChar* pCurChar, int32_t iRotation);
115 FX_DWORD AppendChar_Arabic(CFX_RTFChar* pCurChar, int32_t iRotation); 115 uint32_t AppendChar_Arabic(CFX_RTFChar* pCurChar, int32_t iRotation);
116 FX_DWORD AppendChar_Others(CFX_RTFChar* pCurChar, int32_t iRotation); 116 uint32_t AppendChar_Others(CFX_RTFChar* pCurChar, int32_t iRotation);
117 117
118 protected: 118 protected:
119 FX_DWORD m_dwPolicies; 119 uint32_t m_dwPolicies;
120 IFX_ArabicChar* m_pArabicChar; 120 IFX_ArabicChar* m_pArabicChar;
121 int32_t m_iBoundaryStart; 121 int32_t m_iBoundaryStart;
122 int32_t m_iBoundaryEnd; 122 int32_t m_iBoundaryEnd;
123 FX_DWORD m_dwLayoutStyles; 123 uint32_t m_dwLayoutStyles;
124 FX_BOOL m_bPagination; 124 FX_BOOL m_bPagination;
125 FX_BOOL m_bVertical; 125 FX_BOOL m_bVertical;
126 FX_BOOL m_bSingleLine; 126 FX_BOOL m_bSingleLine;
127 FX_BOOL m_bCharCode; 127 FX_BOOL m_bCharCode;
128 IFX_Font* m_pFont; 128 IFX_Font* m_pFont;
129 int32_t m_iFontHeight; 129 int32_t m_iFontHeight;
130 int32_t m_iFontSize; 130 int32_t m_iFontSize;
131 int32_t m_iTabWidth; 131 int32_t m_iTabWidth;
132 CFX_Int32Array m_PositionedTabs; 132 CFX_Int32Array m_PositionedTabs;
133 FX_BOOL m_bOrphanLine; 133 FX_BOOL m_bOrphanLine;
134 FX_WCHAR m_wDefChar; 134 FX_WCHAR m_wDefChar;
135 int32_t m_iDefChar; 135 int32_t m_iDefChar;
136 FX_WCHAR m_wLineBreakChar; 136 FX_WCHAR m_wLineBreakChar;
137 int32_t m_iHorizontalScale; 137 int32_t m_iHorizontalScale;
138 int32_t m_iVerticalScale; 138 int32_t m_iVerticalScale;
139 int32_t m_iLineRotation; 139 int32_t m_iLineRotation;
140 int32_t m_iCharRotation; 140 int32_t m_iCharRotation;
141 int32_t m_iRotation; 141 int32_t m_iRotation;
142 int32_t m_iCharSpace; 142 int32_t m_iCharSpace;
143 FX_BOOL m_bWordSpace; 143 FX_BOOL m_bWordSpace;
144 int32_t m_iWordSpace; 144 int32_t m_iWordSpace;
145 FX_BOOL m_bRTL; 145 FX_BOOL m_bRTL;
146 int32_t m_iAlignment; 146 int32_t m_iAlignment;
147 IFX_Unknown* m_pUserData; 147 IFX_Unknown* m_pUserData;
148 FX_DWORD m_dwCharType; 148 uint32_t m_dwCharType;
149 FX_DWORD m_dwIdentity; 149 uint32_t m_dwIdentity;
150 CFX_RTFLine m_RTFLine1; 150 CFX_RTFLine m_RTFLine1;
151 CFX_RTFLine m_RTFLine2; 151 CFX_RTFLine m_RTFLine2;
152 CFX_RTFLine* m_pCurLine; 152 CFX_RTFLine* m_pCurLine;
153 int32_t m_iReady; 153 int32_t m_iReady;
154 int32_t m_iTolerance; 154 int32_t m_iTolerance;
155 int32_t GetLineRotation(FX_DWORD dwStyles) const; 155 int32_t GetLineRotation(uint32_t dwStyles) const;
156 void SetBreakStatus(); 156 void SetBreakStatus();
157 CFX_RTFChar* GetLastChar(int32_t index) const; 157 CFX_RTFChar* GetLastChar(int32_t index) const;
158 CFX_RTFLine* GetRTFLine(FX_BOOL bReady) const; 158 CFX_RTFLine* GetRTFLine(FX_BOOL bReady) const;
159 CFX_RTFPieceArray* GetRTFPieces(FX_BOOL bReady) const; 159 CFX_RTFPieceArray* GetRTFPieces(FX_BOOL bReady) const;
160 FX_DWORD GetUnifiedCharType(FX_DWORD dwType) const; 160 uint32_t GetUnifiedCharType(uint32_t dwType) const;
161 int32_t GetLastPositionedTab() const; 161 int32_t GetLastPositionedTab() const;
162 FX_BOOL GetPositionedTab(int32_t& iTabPos) const; 162 FX_BOOL GetPositionedTab(int32_t& iTabPos) const;
163 int32_t GetBreakPos(CFX_RTFCharArray& tca, 163 int32_t GetBreakPos(CFX_RTFCharArray& tca,
164 int32_t& iEndPos, 164 int32_t& iEndPos,
165 FX_BOOL bAllChars = FALSE, 165 FX_BOOL bAllChars = FALSE,
166 FX_BOOL bOnlyBrk = FALSE); 166 FX_BOOL bOnlyBrk = FALSE);
167 void SplitTextLine(CFX_RTFLine* pCurLine, 167 void SplitTextLine(CFX_RTFLine* pCurLine,
168 CFX_RTFLine* pNextLine, 168 CFX_RTFLine* pNextLine,
169 FX_BOOL bAllChars = FALSE); 169 FX_BOOL bAllChars = FALSE);
170 FX_BOOL EndBreak_SplitLine(CFX_RTFLine* pNextLine, 170 FX_BOOL EndBreak_SplitLine(CFX_RTFLine* pNextLine,
171 FX_BOOL bAllChars, 171 FX_BOOL bAllChars,
172 FX_DWORD dwStatus); 172 uint32_t dwStatus);
173 void EndBreak_BidiLine(CFX_TPOArray& tpos, FX_DWORD dwStatus); 173 void EndBreak_BidiLine(CFX_TPOArray& tpos, uint32_t dwStatus);
174 void EndBreak_Alignment(CFX_TPOArray& tpos, 174 void EndBreak_Alignment(CFX_TPOArray& tpos,
175 FX_BOOL bAllChars, 175 FX_BOOL bAllChars,
176 FX_DWORD dwStatus); 176 uint32_t dwStatus);
177 }; 177 };
178 178
179 } // namespace 179 } // namespace
180 180
181 IFX_RTFBreak* IFX_RTFBreak::Create(FX_DWORD dwPolicies) { 181 IFX_RTFBreak* IFX_RTFBreak::Create(uint32_t dwPolicies) {
182 return new CFX_RTFBreak(dwPolicies); 182 return new CFX_RTFBreak(dwPolicies);
183 } 183 }
184 CFX_RTFBreak::CFX_RTFBreak(FX_DWORD dwPolicies) 184 CFX_RTFBreak::CFX_RTFBreak(uint32_t dwPolicies)
185 : m_dwPolicies(dwPolicies), 185 : m_dwPolicies(dwPolicies),
186 m_pArabicChar(NULL), 186 m_pArabicChar(NULL),
187 m_iBoundaryStart(0), 187 m_iBoundaryStart(0),
188 m_iBoundaryEnd(2000000), 188 m_iBoundaryEnd(2000000),
189 m_dwLayoutStyles(0), 189 m_dwLayoutStyles(0),
190 m_bPagination(FALSE), 190 m_bPagination(FALSE),
191 m_bVertical(FALSE), 191 m_bVertical(FALSE),
192 m_bSingleLine(FALSE), 192 m_bSingleLine(FALSE),
193 m_bCharCode(FALSE), 193 m_bCharCode(FALSE),
194 m_pFont(NULL), 194 m_pFont(NULL),
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 m_iBoundaryEnd = FXSYS_round(fLineEnd * 20000.0f); 236 m_iBoundaryEnd = FXSYS_round(fLineEnd * 20000.0f);
237 m_pCurLine->m_iStart = std::min(m_pCurLine->m_iStart, m_iBoundaryEnd); 237 m_pCurLine->m_iStart = std::min(m_pCurLine->m_iStart, m_iBoundaryEnd);
238 m_pCurLine->m_iStart = std::max(m_pCurLine->m_iStart, m_iBoundaryStart); 238 m_pCurLine->m_iStart = std::max(m_pCurLine->m_iStart, m_iBoundaryStart);
239 } 239 }
240 void CFX_RTFBreak::SetLineStartPos(FX_FLOAT fLinePos) { 240 void CFX_RTFBreak::SetLineStartPos(FX_FLOAT fLinePos) {
241 int32_t iLinePos = FXSYS_round(fLinePos * 20000.0f); 241 int32_t iLinePos = FXSYS_round(fLinePos * 20000.0f);
242 iLinePos = std::min(iLinePos, m_iBoundaryEnd); 242 iLinePos = std::min(iLinePos, m_iBoundaryEnd);
243 iLinePos = std::max(iLinePos, m_iBoundaryStart); 243 iLinePos = std::max(iLinePos, m_iBoundaryStart);
244 m_pCurLine->m_iStart = iLinePos; 244 m_pCurLine->m_iStart = iLinePos;
245 } 245 }
246 void CFX_RTFBreak::SetLayoutStyles(FX_DWORD dwLayoutStyles) { 246 void CFX_RTFBreak::SetLayoutStyles(uint32_t dwLayoutStyles) {
247 if (m_dwLayoutStyles == dwLayoutStyles) { 247 if (m_dwLayoutStyles == dwLayoutStyles) {
248 return; 248 return;
249 } 249 }
250 SetBreakStatus(); 250 SetBreakStatus();
251 m_dwLayoutStyles = dwLayoutStyles; 251 m_dwLayoutStyles = dwLayoutStyles;
252 m_bPagination = (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_Pagination) != 0; 252 m_bPagination = (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_Pagination) != 0;
253 m_bVertical = (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_VerticalChars) != 0; 253 m_bVertical = (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_VerticalChars) != 0;
254 m_bSingleLine = (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_SingleLine) != 0; 254 m_bSingleLine = (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_SingleLine) != 0;
255 m_bCharCode = (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_MBCSCode) != 0; 255 m_bCharCode = (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_MBCSCode) != 0;
256 m_iLineRotation = GetLineRotation(m_dwLayoutStyles); 256 m_iLineRotation = GetLineRotation(m_dwLayoutStyles);
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 SetBreakStatus(); 417 SetBreakStatus();
418 if (m_pUserData != NULL) { 418 if (m_pUserData != NULL) {
419 m_pUserData->Release(); 419 m_pUserData->Release();
420 } 420 }
421 m_pUserData = pUserData; 421 m_pUserData = pUserData;
422 if (m_pUserData != NULL) { 422 if (m_pUserData != NULL) {
423 m_pUserData->AddRef(); 423 m_pUserData->AddRef();
424 } 424 }
425 } 425 }
426 static const int32_t gs_FX_RTFLineRotations[8] = {0, 3, 1, 0, 2, 1, 3, 2}; 426 static const int32_t gs_FX_RTFLineRotations[8] = {0, 3, 1, 0, 2, 1, 3, 2};
427 int32_t CFX_RTFBreak::GetLineRotation(FX_DWORD dwStyles) const { 427 int32_t CFX_RTFBreak::GetLineRotation(uint32_t dwStyles) const {
428 return gs_FX_RTFLineRotations[(dwStyles & 0x0E) >> 1]; 428 return gs_FX_RTFLineRotations[(dwStyles & 0x0E) >> 1];
429 } 429 }
430 void CFX_RTFBreak::SetBreakStatus() { 430 void CFX_RTFBreak::SetBreakStatus() {
431 m_dwIdentity++; 431 m_dwIdentity++;
432 int32_t iCount = m_pCurLine->CountChars(); 432 int32_t iCount = m_pCurLine->CountChars();
433 if (iCount < 1) { 433 if (iCount < 1) {
434 return; 434 return;
435 } 435 }
436 CFX_RTFChar& tc = m_pCurLine->GetChar(iCount - 1); 436 CFX_RTFChar& tc = m_pCurLine->GetChar(iCount - 1);
437 if (tc.m_dwStatus == 0) { 437 if (tc.m_dwStatus == 0) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 FXSYS_assert(m_pCurLine != NULL); 470 FXSYS_assert(m_pCurLine != NULL);
471 return m_pCurLine; 471 return m_pCurLine;
472 } 472 }
473 CFX_RTFPieceArray* CFX_RTFBreak::GetRTFPieces(FX_BOOL bReady) const { 473 CFX_RTFPieceArray* CFX_RTFBreak::GetRTFPieces(FX_BOOL bReady) const {
474 CFX_RTFLine* pRTFLine = GetRTFLine(bReady); 474 CFX_RTFLine* pRTFLine = GetRTFLine(bReady);
475 if (pRTFLine == NULL) { 475 if (pRTFLine == NULL) {
476 return NULL; 476 return NULL;
477 } 477 }
478 return &pRTFLine->m_LinePieces; 478 return &pRTFLine->m_LinePieces;
479 } 479 }
480 inline FX_DWORD CFX_RTFBreak::GetUnifiedCharType(FX_DWORD dwType) const { 480 inline uint32_t CFX_RTFBreak::GetUnifiedCharType(uint32_t dwType) const {
481 return dwType >= FX_CHARTYPE_ArabicAlef ? FX_CHARTYPE_Arabic : dwType; 481 return dwType >= FX_CHARTYPE_ArabicAlef ? FX_CHARTYPE_Arabic : dwType;
482 } 482 }
483 int32_t CFX_RTFBreak::GetLastPositionedTab() const { 483 int32_t CFX_RTFBreak::GetLastPositionedTab() const {
484 int32_t iCount = m_PositionedTabs.GetSize(); 484 int32_t iCount = m_PositionedTabs.GetSize();
485 if (iCount < 1) { 485 if (iCount < 1) {
486 return m_iBoundaryStart; 486 return m_iBoundaryStart;
487 } 487 }
488 return m_PositionedTabs[iCount - 1]; 488 return m_PositionedTabs[iCount - 1];
489 } 489 }
490 FX_BOOL CFX_RTFBreak::GetPositionedTab(int32_t& iTabPos) const { 490 FX_BOOL CFX_RTFBreak::GetPositionedTab(int32_t& iTabPos) const {
491 int32_t iCount = m_PositionedTabs.GetSize(); 491 int32_t iCount = m_PositionedTabs.GetSize();
492 for (int32_t i = 0; i < iCount; i++) { 492 for (int32_t i = 0; i < iCount; i++) {
493 if (m_PositionedTabs[i] > iTabPos) { 493 if (m_PositionedTabs[i] > iTabPos) {
494 iTabPos = m_PositionedTabs[i]; 494 iTabPos = m_PositionedTabs[i];
495 return TRUE; 495 return TRUE;
496 } 496 }
497 } 497 }
498 return FALSE; 498 return FALSE;
499 } 499 }
500 typedef FX_DWORD (CFX_RTFBreak::*FX_RTFBreak_LPFAppendChar)( 500 typedef uint32_t (CFX_RTFBreak::*FX_RTFBreak_LPFAppendChar)(
501 CFX_RTFChar* pCurChar, 501 CFX_RTFChar* pCurChar,
502 int32_t iRotation); 502 int32_t iRotation);
503 static const FX_RTFBreak_LPFAppendChar g_FX_RTFBreak_lpfAppendChar[16] = { 503 static const FX_RTFBreak_LPFAppendChar g_FX_RTFBreak_lpfAppendChar[16] = {
504 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Tab, 504 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Tab,
505 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Control, 505 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Control,
506 &CFX_RTFBreak::AppendChar_Combination, &CFX_RTFBreak::AppendChar_Others, 506 &CFX_RTFBreak::AppendChar_Combination, &CFX_RTFBreak::AppendChar_Others,
507 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Arabic, 507 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Arabic,
508 &CFX_RTFBreak::AppendChar_Arabic, &CFX_RTFBreak::AppendChar_Arabic, 508 &CFX_RTFBreak::AppendChar_Arabic, &CFX_RTFBreak::AppendChar_Arabic,
509 &CFX_RTFBreak::AppendChar_Arabic, &CFX_RTFBreak::AppendChar_Arabic, 509 &CFX_RTFBreak::AppendChar_Arabic, &CFX_RTFBreak::AppendChar_Arabic,
510 &CFX_RTFBreak::AppendChar_Arabic, &CFX_RTFBreak::AppendChar_Others, 510 &CFX_RTFBreak::AppendChar_Arabic, &CFX_RTFBreak::AppendChar_Others,
511 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Others, 511 &CFX_RTFBreak::AppendChar_Others, &CFX_RTFBreak::AppendChar_Others,
512 }; 512 };
513 FX_DWORD CFX_RTFBreak::AppendChar(FX_WCHAR wch) { 513 uint32_t CFX_RTFBreak::AppendChar(FX_WCHAR wch) {
514 FXSYS_assert(m_pFont != NULL && m_pCurLine != NULL && m_pArabicChar != NULL); 514 FXSYS_assert(m_pFont != NULL && m_pCurLine != NULL && m_pArabicChar != NULL);
515 if (m_bCharCode) { 515 if (m_bCharCode) {
516 return AppendChar_CharCode(wch); 516 return AppendChar_CharCode(wch);
517 } 517 }
518 FX_DWORD dwProps = kTextLayoutCodeProperties[(uint16_t)wch]; 518 uint32_t dwProps = kTextLayoutCodeProperties[(uint16_t)wch];
519 FX_DWORD dwType = (dwProps & FX_CHARTYPEBITSMASK); 519 uint32_t dwType = (dwProps & FX_CHARTYPEBITSMASK);
520 CFX_RTFCharArray& tca = m_pCurLine->m_LineChars; 520 CFX_RTFCharArray& tca = m_pCurLine->m_LineChars;
521 CFX_RTFChar* pCurChar = tca.AddSpace(); 521 CFX_RTFChar* pCurChar = tca.AddSpace();
522 pCurChar->m_dwStatus = 0; 522 pCurChar->m_dwStatus = 0;
523 pCurChar->m_wCharCode = wch; 523 pCurChar->m_wCharCode = wch;
524 pCurChar->m_dwCharProps = dwProps; 524 pCurChar->m_dwCharProps = dwProps;
525 pCurChar->m_dwCharStyles = 0; 525 pCurChar->m_dwCharStyles = 0;
526 pCurChar->m_dwLayoutStyles = 0; 526 pCurChar->m_dwLayoutStyles = 0;
527 pCurChar->m_iFontSize = m_iFontSize; 527 pCurChar->m_iFontSize = m_iFontSize;
528 pCurChar->m_iFontHeight = m_iFontHeight; 528 pCurChar->m_iFontHeight = m_iFontHeight;
529 pCurChar->m_iHorizontalScale = m_iHorizontalScale; 529 pCurChar->m_iHorizontalScale = m_iHorizontalScale;
530 pCurChar->m_iVertialScale = m_iVerticalScale; 530 pCurChar->m_iVertialScale = m_iVerticalScale;
531 pCurChar->m_nRotation = m_iCharRotation; 531 pCurChar->m_nRotation = m_iCharRotation;
532 pCurChar->m_iCharWidth = 0; 532 pCurChar->m_iCharWidth = 0;
533 pCurChar->m_dwIdentity = m_dwIdentity; 533 pCurChar->m_dwIdentity = m_dwIdentity;
534 if (m_pUserData != NULL) { 534 if (m_pUserData != NULL) {
535 m_pUserData->AddRef(); 535 m_pUserData->AddRef();
536 } 536 }
537 pCurChar->m_pUserData = m_pUserData; 537 pCurChar->m_pUserData = m_pUserData;
538 FX_DWORD dwRet1 = FX_RTFBREAK_None; 538 uint32_t dwRet1 = FX_RTFBREAK_None;
539 if (dwType != FX_CHARTYPE_Combination && 539 if (dwType != FX_CHARTYPE_Combination &&
540 GetUnifiedCharType(m_dwCharType) != GetUnifiedCharType(dwType)) { 540 GetUnifiedCharType(m_dwCharType) != GetUnifiedCharType(dwType)) {
541 if (!m_bSingleLine && !m_bOrphanLine && m_dwCharType > 0 && 541 if (!m_bSingleLine && !m_bOrphanLine && m_dwCharType > 0 &&
542 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) { 542 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) {
543 if (m_dwCharType != FX_CHARTYPE_Space || dwType != FX_CHARTYPE_Control) { 543 if (m_dwCharType != FX_CHARTYPE_Space || dwType != FX_CHARTYPE_Control) {
544 dwRet1 = EndBreak(FX_RTFBREAK_LineBreak); 544 dwRet1 = EndBreak(FX_RTFBREAK_LineBreak);
545 int32_t iCount = m_pCurLine->CountChars(); 545 int32_t iCount = m_pCurLine->CountChars();
546 if (iCount > 0) { 546 if (iCount > 0) {
547 pCurChar = m_pCurLine->m_LineChars.GetDataPtr(iCount - 1); 547 pCurChar = m_pCurLine->m_LineChars.GetDataPtr(iCount - 1);
548 } 548 }
549 } 549 }
550 } 550 }
551 } 551 }
552 int32_t iRotation = m_iRotation; 552 int32_t iRotation = m_iRotation;
553 if (m_bVertical && (dwProps & 0x8000) != 0) { 553 if (m_bVertical && (dwProps & 0x8000) != 0) {
554 iRotation = (iRotation + 1) % 4; 554 iRotation = (iRotation + 1) % 4;
555 } 555 }
556 FX_DWORD dwRet2 = 556 uint32_t dwRet2 =
557 (this->*g_FX_RTFBreak_lpfAppendChar[dwType >> FX_CHARTYPEBITS])( 557 (this->*g_FX_RTFBreak_lpfAppendChar[dwType >> FX_CHARTYPEBITS])(
558 pCurChar, iRotation); 558 pCurChar, iRotation);
559 m_dwCharType = dwType; 559 m_dwCharType = dwType;
560 return std::max(dwRet1, dwRet2); 560 return std::max(dwRet1, dwRet2);
561 } 561 }
562 FX_DWORD CFX_RTFBreak::AppendChar_CharCode(FX_WCHAR wch) { 562 uint32_t CFX_RTFBreak::AppendChar_CharCode(FX_WCHAR wch) {
563 FXSYS_assert(m_pFont != NULL && m_pCurLine != NULL); 563 FXSYS_assert(m_pFont != NULL && m_pCurLine != NULL);
564 FXSYS_assert(m_bCharCode); 564 FXSYS_assert(m_bCharCode);
565 m_pCurLine->m_iMBCSChars++; 565 m_pCurLine->m_iMBCSChars++;
566 CFX_RTFCharArray& tca = m_pCurLine->m_LineChars; 566 CFX_RTFCharArray& tca = m_pCurLine->m_LineChars;
567 CFX_RTFChar* pCurChar = tca.AddSpace(); 567 CFX_RTFChar* pCurChar = tca.AddSpace();
568 pCurChar->m_dwStatus = 0; 568 pCurChar->m_dwStatus = 0;
569 pCurChar->m_wCharCode = wch; 569 pCurChar->m_wCharCode = wch;
570 pCurChar->m_dwCharProps = 0; 570 pCurChar->m_dwCharProps = 0;
571 pCurChar->m_dwCharStyles = 0; 571 pCurChar->m_dwCharStyles = 0;
572 pCurChar->m_dwLayoutStyles = m_dwLayoutStyles; 572 pCurChar->m_dwLayoutStyles = m_dwLayoutStyles;
(...skipping 21 matching lines...) Expand all
594 iCharWidth += m_iCharSpace; 594 iCharWidth += m_iCharSpace;
595 pCurChar->m_iCharWidth = iCharWidth; 595 pCurChar->m_iCharWidth = iCharWidth;
596 m_pCurLine->m_iWidth += iCharWidth; 596 m_pCurLine->m_iWidth += iCharWidth;
597 m_dwCharType = 0; 597 m_dwCharType = 0;
598 if (!m_bSingleLine && 598 if (!m_bSingleLine &&
599 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) { 599 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) {
600 return EndBreak(FX_RTFBREAK_LineBreak); 600 return EndBreak(FX_RTFBREAK_LineBreak);
601 } 601 }
602 return FX_RTFBREAK_None; 602 return FX_RTFBREAK_None;
603 } 603 }
604 FX_DWORD CFX_RTFBreak::AppendChar_Combination(CFX_RTFChar* pCurChar, 604 uint32_t CFX_RTFBreak::AppendChar_Combination(CFX_RTFChar* pCurChar,
605 int32_t iRotation) { 605 int32_t iRotation) {
606 int32_t iCharWidth = 0; 606 int32_t iCharWidth = 0;
607 if (m_bVertical != FX_IsOdd(iRotation)) { 607 if (m_bVertical != FX_IsOdd(iRotation)) {
608 iCharWidth = 1000; 608 iCharWidth = 1000;
609 } else { 609 } else {
610 if (!m_pFont->GetCharWidth(pCurChar->m_wCharCode, iCharWidth, 610 if (!m_pFont->GetCharWidth(pCurChar->m_wCharCode, iCharWidth,
611 m_bCharCode)) { 611 m_bCharCode)) {
612 iCharWidth = 0; 612 iCharWidth = 0;
613 } 613 }
614 } 614 }
615 iCharWidth *= m_iFontSize; 615 iCharWidth *= m_iFontSize;
616 iCharWidth = iCharWidth * m_iHorizontalScale / 100; 616 iCharWidth = iCharWidth * m_iHorizontalScale / 100;
617 CFX_RTFChar* pLastChar = GetLastChar(0); 617 CFX_RTFChar* pLastChar = GetLastChar(0);
618 if (pLastChar != NULL && pLastChar->GetCharType() > FX_CHARTYPE_Combination) { 618 if (pLastChar != NULL && pLastChar->GetCharType() > FX_CHARTYPE_Combination) {
619 iCharWidth = -iCharWidth; 619 iCharWidth = -iCharWidth;
620 } else { 620 } else {
621 m_dwCharType = FX_CHARTYPE_Combination; 621 m_dwCharType = FX_CHARTYPE_Combination;
622 } 622 }
623 pCurChar->m_iCharWidth = iCharWidth; 623 pCurChar->m_iCharWidth = iCharWidth;
624 if (iCharWidth > 0) { 624 if (iCharWidth > 0) {
625 m_pCurLine->m_iWidth += iCharWidth; 625 m_pCurLine->m_iWidth += iCharWidth;
626 } 626 }
627 return FX_RTFBREAK_None; 627 return FX_RTFBREAK_None;
628 } 628 }
629 FX_DWORD CFX_RTFBreak::AppendChar_Tab(CFX_RTFChar* pCurChar, 629 uint32_t CFX_RTFBreak::AppendChar_Tab(CFX_RTFChar* pCurChar,
630 int32_t iRotation) { 630 int32_t iRotation) {
631 if (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_ExpandTab) { 631 if (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_ExpandTab) {
632 FX_BOOL bBreak = FALSE; 632 FX_BOOL bBreak = FALSE;
633 if ((m_dwPolicies & FX_RTFBREAKPOLICY_TabBreak) != 0) { 633 if ((m_dwPolicies & FX_RTFBREAKPOLICY_TabBreak) != 0) {
634 bBreak = (m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance); 634 bBreak = (m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance);
635 } 635 }
636 int32_t& iLineWidth = m_pCurLine->m_iWidth; 636 int32_t& iLineWidth = m_pCurLine->m_iWidth;
637 int32_t iCharWidth = iLineWidth; 637 int32_t iCharWidth = iLineWidth;
638 if (GetPositionedTab(iCharWidth)) { 638 if (GetPositionedTab(iCharWidth)) {
639 iCharWidth -= iLineWidth; 639 iCharWidth -= iLineWidth;
640 } else { 640 } else {
641 iCharWidth = m_iTabWidth * (iLineWidth / m_iTabWidth + 1) - iLineWidth; 641 iCharWidth = m_iTabWidth * (iLineWidth / m_iTabWidth + 1) - iLineWidth;
642 } 642 }
643 pCurChar->m_iCharWidth = iCharWidth; 643 pCurChar->m_iCharWidth = iCharWidth;
644 iLineWidth += iCharWidth; 644 iLineWidth += iCharWidth;
645 if (!m_bSingleLine && !m_bOrphanLine && bBreak) { 645 if (!m_bSingleLine && !m_bOrphanLine && bBreak) {
646 return EndBreak(FX_RTFBREAK_LineBreak); 646 return EndBreak(FX_RTFBREAK_LineBreak);
647 } 647 }
648 } 648 }
649 return FX_RTFBREAK_None; 649 return FX_RTFBREAK_None;
650 } 650 }
651 FX_DWORD CFX_RTFBreak::AppendChar_Control(CFX_RTFChar* pCurChar, 651 uint32_t CFX_RTFBreak::AppendChar_Control(CFX_RTFChar* pCurChar,
652 int32_t iRotation) { 652 int32_t iRotation) {
653 FX_DWORD dwRet2 = FX_RTFBREAK_None; 653 uint32_t dwRet2 = FX_RTFBREAK_None;
654 if (!m_bSingleLine) { 654 if (!m_bSingleLine) {
655 switch (pCurChar->m_wCharCode) { 655 switch (pCurChar->m_wCharCode) {
656 case L'\v': 656 case L'\v':
657 case 0x2028: 657 case 0x2028:
658 dwRet2 = FX_RTFBREAK_LineBreak; 658 dwRet2 = FX_RTFBREAK_LineBreak;
659 break; 659 break;
660 case L'\f': 660 case L'\f':
661 dwRet2 = FX_RTFBREAK_PageBreak; 661 dwRet2 = FX_RTFBREAK_PageBreak;
662 break; 662 break;
663 case 0x2029: 663 case 0x2029:
664 dwRet2 = FX_RTFBREAK_ParagraphBreak; 664 dwRet2 = FX_RTFBREAK_ParagraphBreak;
665 break; 665 break;
666 default: 666 default:
667 if (pCurChar->m_wCharCode == m_wLineBreakChar) { 667 if (pCurChar->m_wCharCode == m_wLineBreakChar) {
668 dwRet2 = FX_RTFBREAK_ParagraphBreak; 668 dwRet2 = FX_RTFBREAK_ParagraphBreak;
669 } 669 }
670 break; 670 break;
671 } 671 }
672 if (dwRet2 != FX_RTFBREAK_None) { 672 if (dwRet2 != FX_RTFBREAK_None) {
673 dwRet2 = EndBreak(dwRet2); 673 dwRet2 = EndBreak(dwRet2);
674 } 674 }
675 } 675 }
676 return dwRet2; 676 return dwRet2;
677 } 677 }
678 FX_DWORD CFX_RTFBreak::AppendChar_Arabic(CFX_RTFChar* pCurChar, 678 uint32_t CFX_RTFBreak::AppendChar_Arabic(CFX_RTFChar* pCurChar,
679 int32_t iRotation) { 679 int32_t iRotation) {
680 CFX_RTFChar* pLastChar = NULL; 680 CFX_RTFChar* pLastChar = NULL;
681 int32_t& iLineWidth = m_pCurLine->m_iWidth; 681 int32_t& iLineWidth = m_pCurLine->m_iWidth;
682 int32_t iCharWidth = 0; 682 int32_t iCharWidth = 0;
683 FX_WCHAR wForm; 683 FX_WCHAR wForm;
684 FX_BOOL bAlef = FALSE; 684 FX_BOOL bAlef = FALSE;
685 if (m_dwCharType >= FX_CHARTYPE_ArabicAlef && 685 if (m_dwCharType >= FX_CHARTYPE_ArabicAlef &&
686 m_dwCharType <= FX_CHARTYPE_ArabicDistortion) { 686 m_dwCharType <= FX_CHARTYPE_ArabicDistortion) {
687 pLastChar = GetLastChar(1); 687 pLastChar = GetLastChar(1);
688 if (pLastChar != NULL) { 688 if (pLastChar != NULL) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 iCharWidth = iCharWidth * m_iHorizontalScale / 100; 726 iCharWidth = iCharWidth * m_iHorizontalScale / 100;
727 pCurChar->m_iCharWidth = iCharWidth; 727 pCurChar->m_iCharWidth = iCharWidth;
728 iLineWidth += iCharWidth; 728 iLineWidth += iCharWidth;
729 m_pCurLine->m_iArabicChars++; 729 m_pCurLine->m_iArabicChars++;
730 if (!m_bSingleLine && !m_bOrphanLine && 730 if (!m_bSingleLine && !m_bOrphanLine &&
731 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) { 731 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) {
732 return EndBreak(FX_RTFBREAK_LineBreak); 732 return EndBreak(FX_RTFBREAK_LineBreak);
733 } 733 }
734 return FX_RTFBREAK_None; 734 return FX_RTFBREAK_None;
735 } 735 }
736 FX_DWORD CFX_RTFBreak::AppendChar_Others(CFX_RTFChar* pCurChar, 736 uint32_t CFX_RTFBreak::AppendChar_Others(CFX_RTFChar* pCurChar,
737 int32_t iRotation) { 737 int32_t iRotation) {
738 FX_DWORD dwType = (pCurChar->m_dwCharProps & FX_CHARTYPEBITSMASK); 738 uint32_t dwType = (pCurChar->m_dwCharProps & FX_CHARTYPEBITSMASK);
739 FX_WCHAR wForm; 739 FX_WCHAR wForm;
740 if (dwType == FX_CHARTYPE_Numeric) { 740 if (dwType == FX_CHARTYPE_Numeric) {
741 if (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_ArabicNumber) { 741 if (m_dwLayoutStyles & FX_RTFLAYOUTSTYLE_ArabicNumber) {
742 wForm = pCurChar->m_wCharCode + 0x0630; 742 wForm = pCurChar->m_wCharCode + 0x0630;
743 } else { 743 } else {
744 wForm = pCurChar->m_wCharCode; 744 wForm = pCurChar->m_wCharCode;
745 } 745 }
746 } else if (m_bRTL || m_bVertical) { 746 } else if (m_bRTL || m_bVertical) {
747 wForm = FX_GetMirrorChar(pCurChar->m_wCharCode, pCurChar->m_dwCharProps, 747 wForm = FX_GetMirrorChar(pCurChar->m_wCharCode, pCurChar->m_dwCharProps,
748 m_bRTL, m_bVertical); 748 m_bRTL, m_bVertical);
(...skipping 17 matching lines...) Expand all
766 pCurChar->m_iCharWidth = iCharWidth; 766 pCurChar->m_iCharWidth = iCharWidth;
767 m_pCurLine->m_iWidth += iCharWidth; 767 m_pCurLine->m_iWidth += iCharWidth;
768 FX_BOOL bBreak = (dwType != FX_CHARTYPE_Space || 768 FX_BOOL bBreak = (dwType != FX_CHARTYPE_Space ||
769 (m_dwPolicies & FX_RTFBREAKPOLICY_SpaceBreak) != 0); 769 (m_dwPolicies & FX_RTFBREAKPOLICY_SpaceBreak) != 0);
770 if (!m_bSingleLine && !m_bOrphanLine && bBreak && 770 if (!m_bSingleLine && !m_bOrphanLine && bBreak &&
771 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) { 771 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) {
772 return EndBreak(FX_RTFBREAK_LineBreak); 772 return EndBreak(FX_RTFBREAK_LineBreak);
773 } 773 }
774 return FX_RTFBREAK_None; 774 return FX_RTFBREAK_None;
775 } 775 }
776 FX_DWORD CFX_RTFBreak::EndBreak(FX_DWORD dwStatus) { 776 uint32_t CFX_RTFBreak::EndBreak(uint32_t dwStatus) {
777 FXSYS_assert(dwStatus >= FX_RTFBREAK_PieceBreak && 777 FXSYS_assert(dwStatus >= FX_RTFBREAK_PieceBreak &&
778 dwStatus <= FX_RTFBREAK_PageBreak); 778 dwStatus <= FX_RTFBREAK_PageBreak);
779 m_dwIdentity++; 779 m_dwIdentity++;
780 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces; 780 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces;
781 int32_t iCount = pCurPieces->GetSize(); 781 int32_t iCount = pCurPieces->GetSize();
782 if (iCount > 0) { 782 if (iCount > 0) {
783 CFX_RTFPiece* pLastPiece = pCurPieces->GetPtrAt(--iCount); 783 CFX_RTFPiece* pLastPiece = pCurPieces->GetPtrAt(--iCount);
784 if (dwStatus > FX_RTFBREAK_PieceBreak) { 784 if (dwStatus > FX_RTFBREAK_PieceBreak) {
785 pLastPiece->m_dwStatus = dwStatus; 785 pLastPiece->m_dwStatus = dwStatus;
786 } else { 786 } else {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 } 829 }
830 EndBreak_Ret: 830 EndBreak_Ret:
831 m_pCurLine = pNextLine; 831 m_pCurLine = pNextLine;
832 m_pCurLine->m_iStart = m_iBoundaryStart; 832 m_pCurLine->m_iStart = m_iBoundaryStart;
833 CFX_RTFChar* pTC = GetLastChar(0); 833 CFX_RTFChar* pTC = GetLastChar(0);
834 m_dwCharType = pTC == NULL ? 0 : pTC->GetCharType(); 834 m_dwCharType = pTC == NULL ? 0 : pTC->GetCharType();
835 return dwStatus; 835 return dwStatus;
836 } 836 }
837 FX_BOOL CFX_RTFBreak::EndBreak_SplitLine(CFX_RTFLine* pNextLine, 837 FX_BOOL CFX_RTFBreak::EndBreak_SplitLine(CFX_RTFLine* pNextLine,
838 FX_BOOL bAllChars, 838 FX_BOOL bAllChars,
839 FX_DWORD dwStatus) { 839 uint32_t dwStatus) {
840 FX_BOOL bDone = FALSE; 840 FX_BOOL bDone = FALSE;
841 if (!m_bSingleLine && !m_bOrphanLine && 841 if (!m_bSingleLine && !m_bOrphanLine &&
842 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) { 842 m_pCurLine->GetLineEnd() > m_iBoundaryEnd + m_iTolerance) {
843 CFX_RTFChar& tc = m_pCurLine->GetChar(m_pCurLine->CountChars() - 1); 843 CFX_RTFChar& tc = m_pCurLine->GetChar(m_pCurLine->CountChars() - 1);
844 switch (tc.GetCharType()) { 844 switch (tc.GetCharType()) {
845 case FX_CHARTYPE_Tab: 845 case FX_CHARTYPE_Tab:
846 if ((m_dwPolicies & FX_RTFBREAKPOLICY_TabBreak) != 0) { 846 if ((m_dwPolicies & FX_RTFBREAKPOLICY_TabBreak) != 0) {
847 SplitTextLine(m_pCurLine, pNextLine, !m_bPagination && bAllChars); 847 SplitTextLine(m_pCurLine, pNextLine, !m_bPagination && bAllChars);
848 bDone = TRUE; 848 bDone = TRUE;
849 } 849 }
(...skipping 12 matching lines...) Expand all
862 break; 862 break;
863 } 863 }
864 } 864 }
865 if (m_bPagination || m_pCurLine->m_iMBCSChars > 0) { 865 if (m_bPagination || m_pCurLine->m_iMBCSChars > 0) {
866 const CFX_RTFChar* pCurChars = m_pCurLine->m_LineChars.GetData(); 866 const CFX_RTFChar* pCurChars = m_pCurLine->m_LineChars.GetData();
867 const CFX_RTFChar* pTC; 867 const CFX_RTFChar* pTC;
868 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces; 868 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces;
869 CFX_RTFPiece tp; 869 CFX_RTFPiece tp;
870 tp.m_pChars = &m_pCurLine->m_LineChars; 870 tp.m_pChars = &m_pCurLine->m_LineChars;
871 FX_BOOL bNew = TRUE; 871 FX_BOOL bNew = TRUE;
872 FX_DWORD dwIdentity = (FX_DWORD)-1; 872 uint32_t dwIdentity = (uint32_t)-1;
873 int32_t iLast = m_pCurLine->CountChars() - 1, j = 0; 873 int32_t iLast = m_pCurLine->CountChars() - 1, j = 0;
874 for (int32_t i = 0; i <= iLast;) { 874 for (int32_t i = 0; i <= iLast;) {
875 pTC = pCurChars + i; 875 pTC = pCurChars + i;
876 if (bNew) { 876 if (bNew) {
877 tp.m_iStartChar = i; 877 tp.m_iStartChar = i;
878 tp.m_iStartPos += tp.m_iWidth; 878 tp.m_iStartPos += tp.m_iWidth;
879 tp.m_iWidth = 0; 879 tp.m_iWidth = 0;
880 tp.m_dwStatus = pTC->m_dwStatus; 880 tp.m_dwStatus = pTC->m_dwStatus;
881 tp.m_iFontSize = pTC->m_iFontSize; 881 tp.m_iFontSize = pTC->m_iFontSize;
882 tp.m_iFontHeight = pTC->m_iFontHeight; 882 tp.m_iFontHeight = pTC->m_iFontHeight;
(...skipping 23 matching lines...) Expand all
906 } 906 }
907 } 907 }
908 return TRUE; 908 return TRUE;
909 } 909 }
910 if (bAllChars && !bDone) { 910 if (bAllChars && !bDone) {
911 int32_t iEndPos = m_pCurLine->GetLineEnd(); 911 int32_t iEndPos = m_pCurLine->GetLineEnd();
912 GetBreakPos(m_pCurLine->m_LineChars, iEndPos, bAllChars, TRUE); 912 GetBreakPos(m_pCurLine->m_LineChars, iEndPos, bAllChars, TRUE);
913 } 913 }
914 return FALSE; 914 return FALSE;
915 } 915 }
916 void CFX_RTFBreak::EndBreak_BidiLine(CFX_TPOArray& tpos, FX_DWORD dwStatus) { 916 void CFX_RTFBreak::EndBreak_BidiLine(CFX_TPOArray& tpos, uint32_t dwStatus) {
917 FX_TPO tpo; 917 FX_TPO tpo;
918 CFX_RTFPiece tp; 918 CFX_RTFPiece tp;
919 CFX_RTFChar* pTC; 919 CFX_RTFChar* pTC;
920 int32_t i, j; 920 int32_t i, j;
921 CFX_RTFCharArray& chars = m_pCurLine->m_LineChars; 921 CFX_RTFCharArray& chars = m_pCurLine->m_LineChars;
922 int32_t iCount = m_pCurLine->CountChars(); 922 int32_t iCount = m_pCurLine->CountChars();
923 FX_BOOL bDone = (!m_bPagination && !m_bCharCode && 923 FX_BOOL bDone = (!m_bPagination && !m_bCharCode &&
924 (m_pCurLine->m_iArabicChars > 0 || m_bRTL)); 924 (m_pCurLine->m_iArabicChars > 0 || m_bRTL));
925 if (bDone) { 925 if (bDone) {
926 int32_t iBidiNum = 0; 926 int32_t iBidiNum = 0;
(...skipping 14 matching lines...) Expand all
941 pTC->m_iBidiLevel = 0; 941 pTC->m_iBidiLevel = 0;
942 pTC->m_iBidiPos = 0; 942 pTC->m_iBidiPos = 0;
943 pTC->m_iBidiOrder = 0; 943 pTC->m_iBidiOrder = 0;
944 } 944 }
945 } 945 }
946 tp.m_dwStatus = FX_RTFBREAK_PieceBreak; 946 tp.m_dwStatus = FX_RTFBREAK_PieceBreak;
947 tp.m_iStartPos = m_pCurLine->m_iStart; 947 tp.m_iStartPos = m_pCurLine->m_iStart;
948 tp.m_pChars = &chars; 948 tp.m_pChars = &chars;
949 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces; 949 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces;
950 int32_t iBidiLevel = -1, iCharWidth; 950 int32_t iBidiLevel = -1, iCharWidth;
951 FX_DWORD dwIdentity = (FX_DWORD)-1; 951 uint32_t dwIdentity = (uint32_t)-1;
952 i = j = 0; 952 i = j = 0;
953 while (i < iCount) { 953 while (i < iCount) {
954 pTC = chars.GetDataPtr(i); 954 pTC = chars.GetDataPtr(i);
955 if (iBidiLevel < 0) { 955 if (iBidiLevel < 0) {
956 iBidiLevel = pTC->m_iBidiLevel; 956 iBidiLevel = pTC->m_iBidiLevel;
957 iCharWidth = pTC->m_iCharWidth; 957 iCharWidth = pTC->m_iCharWidth;
958 if (iCharWidth < 1) { 958 if (iCharWidth < 1) {
959 tp.m_iWidth = 0; 959 tp.m_iWidth = 0;
960 } else { 960 } else {
961 tp.m_iWidth = iCharWidth; 961 tp.m_iWidth = iCharWidth;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 for (i = 0; i <= j; i++) { 1004 for (i = 0; i <= j; i++) {
1005 tpo = tpos.GetAt(i); 1005 tpo = tpos.GetAt(i);
1006 CFX_RTFPiece& ttp = pCurPieces->GetAt(tpo.index); 1006 CFX_RTFPiece& ttp = pCurPieces->GetAt(tpo.index);
1007 ttp.m_iStartPos = iStartPos; 1007 ttp.m_iStartPos = iStartPos;
1008 iStartPos += ttp.m_iWidth; 1008 iStartPos += ttp.m_iWidth;
1009 } 1009 }
1010 } 1010 }
1011 } 1011 }
1012 void CFX_RTFBreak::EndBreak_Alignment(CFX_TPOArray& tpos, 1012 void CFX_RTFBreak::EndBreak_Alignment(CFX_TPOArray& tpos,
1013 FX_BOOL bAllChars, 1013 FX_BOOL bAllChars,
1014 FX_DWORD dwStatus) { 1014 uint32_t dwStatus) {
1015 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces; 1015 CFX_RTFPieceArray* pCurPieces = &m_pCurLine->m_LinePieces;
1016 int32_t iNetWidth = m_pCurLine->m_iWidth, iGapChars = 0, iCharWidth; 1016 int32_t iNetWidth = m_pCurLine->m_iWidth, iGapChars = 0, iCharWidth;
1017 int32_t iCount = pCurPieces->GetSize(); 1017 int32_t iCount = pCurPieces->GetSize();
1018 FX_BOOL bFind = FALSE; 1018 FX_BOOL bFind = FALSE;
1019 FX_DWORD dwCharType; 1019 uint32_t dwCharType;
1020 int32_t i, j; 1020 int32_t i, j;
1021 FX_TPO tpo; 1021 FX_TPO tpo;
1022 for (i = iCount - 1; i > -1; i--) { 1022 for (i = iCount - 1; i > -1; i--) {
1023 tpo = tpos.GetAt(i); 1023 tpo = tpos.GetAt(i);
1024 CFX_RTFPiece& ttp = pCurPieces->GetAt(tpo.index); 1024 CFX_RTFPiece& ttp = pCurPieces->GetAt(tpo.index);
1025 if (!bFind) { 1025 if (!bFind) {
1026 iNetWidth = ttp.GetEndPos(); 1026 iNetWidth = ttp.GetEndPos();
1027 } 1027 }
1028 FX_BOOL bArabic = FX_IsOdd(ttp.m_iBidiLevel); 1028 FX_BOOL bArabic = FX_IsOdd(ttp.m_iBidiLevel);
1029 j = bArabic ? 0 : ttp.m_iChars - 1; 1029 j = bArabic ? 0 : ttp.m_iChars - 1;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 iEndPos -= iCharWidth; 1130 iEndPos -= iCharWidth;
1131 } 1131 }
1132 } 1132 }
1133 return iLength; 1133 return iLength;
1134 } 1134 }
1135 FX_BOOL bSpaceBreak = (m_dwPolicies & FX_RTFBREAKPOLICY_SpaceBreak) != 0; 1135 FX_BOOL bSpaceBreak = (m_dwPolicies & FX_RTFBREAKPOLICY_SpaceBreak) != 0;
1136 FX_BOOL bTabBreak = (m_dwPolicies & FX_RTFBREAKPOLICY_TabBreak) != 0; 1136 FX_BOOL bTabBreak = (m_dwPolicies & FX_RTFBREAKPOLICY_TabBreak) != 0;
1137 FX_BOOL bNumberBreak = (m_dwPolicies & FX_RTFBREAKPOLICY_NumberBreak) != 0; 1137 FX_BOOL bNumberBreak = (m_dwPolicies & FX_RTFBREAKPOLICY_NumberBreak) != 0;
1138 FX_BOOL bInfixBreak = (m_dwPolicies & FX_RTFBREAKPOLICY_InfixBreak) != 0; 1138 FX_BOOL bInfixBreak = (m_dwPolicies & FX_RTFBREAKPOLICY_InfixBreak) != 0;
1139 FX_LINEBREAKTYPE eType; 1139 FX_LINEBREAKTYPE eType;
1140 FX_DWORD nCodeProp, nCur, nNext; 1140 uint32_t nCodeProp, nCur, nNext;
1141 CFX_RTFChar* pCur = pCharArray + iLength--; 1141 CFX_RTFChar* pCur = pCharArray + iLength--;
1142 if (bAllChars) { 1142 if (bAllChars) {
1143 pCur->m_nBreakType = FX_LBT_UNKNOWN; 1143 pCur->m_nBreakType = FX_LBT_UNKNOWN;
1144 } 1144 }
1145 nCodeProp = pCur->m_dwCharProps; 1145 nCodeProp = pCur->m_dwCharProps;
1146 nNext = nCodeProp & 0x003F; 1146 nNext = nCodeProp & 0x003F;
1147 int32_t iCharWidth = pCur->m_iCharWidth; 1147 int32_t iCharWidth = pCur->m_iCharWidth;
1148 if (iCharWidth > 0) { 1148 if (iCharWidth > 0) {
1149 iEndPos -= iCharWidth; 1149 iEndPos -= iCharWidth;
1150 } 1150 }
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
1348 FX_AdjustCharDisplayPos pAdjustPos) const { 1348 FX_AdjustCharDisplayPos pAdjustPos) const {
1349 if (pText == NULL || pText->iLength < 1) { 1349 if (pText == NULL || pText->iLength < 1) {
1350 return 0; 1350 return 0;
1351 } 1351 }
1352 FXSYS_assert(pText->pStr != NULL && pText->pWidths != NULL && 1352 FXSYS_assert(pText->pStr != NULL && pText->pWidths != NULL &&
1353 pText->pFont != NULL && pText->pRect != NULL); 1353 pText->pFont != NULL && pText->pRect != NULL);
1354 const FX_WCHAR* pStr = pText->pStr; 1354 const FX_WCHAR* pStr = pText->pStr;
1355 int32_t* pWidths = pText->pWidths; 1355 int32_t* pWidths = pText->pWidths;
1356 int32_t iLength = pText->iLength - 1; 1356 int32_t iLength = pText->iLength - 1;
1357 IFX_Font* pFont = pText->pFont; 1357 IFX_Font* pFont = pText->pFont;
1358 FX_DWORD dwStyles = pText->dwLayoutStyles; 1358 uint32_t dwStyles = pText->dwLayoutStyles;
1359 CFX_RectF rtText(*pText->pRect); 1359 CFX_RectF rtText(*pText->pRect);
1360 FX_BOOL bRTLPiece = FX_IsOdd(pText->iBidiLevel); 1360 FX_BOOL bRTLPiece = FX_IsOdd(pText->iBidiLevel);
1361 FX_FLOAT fFontSize = pText->fFontSize; 1361 FX_FLOAT fFontSize = pText->fFontSize;
1362 int32_t iFontSize = FXSYS_round(fFontSize * 20.0f); 1362 int32_t iFontSize = FXSYS_round(fFontSize * 20.0f);
1363 int32_t iAscent = pFont->GetAscent(); 1363 int32_t iAscent = pFont->GetAscent();
1364 int32_t iDescent = pFont->GetDescent(); 1364 int32_t iDescent = pFont->GetDescent();
1365 int32_t iMaxHeight = iAscent - iDescent; 1365 int32_t iMaxHeight = iAscent - iDescent;
1366 FX_FLOAT fFontHeight = fFontSize; 1366 FX_FLOAT fFontHeight = fFontSize;
1367 FX_FLOAT fAscent = fFontHeight * (FX_FLOAT)iAscent / (FX_FLOAT)iMaxHeight; 1367 FX_FLOAT fAscent = fFontHeight * (FX_FLOAT)iAscent / (FX_FLOAT)iMaxHeight;
1368 FX_FLOAT fDescent = fFontHeight * (FX_FLOAT)iDescent / (FX_FLOAT)iMaxHeight; 1368 FX_FLOAT fDescent = fFontHeight * (FX_FLOAT)iDescent / (FX_FLOAT)iMaxHeight;
1369 FX_BOOL bVerticalDoc = (dwStyles & FX_RTFLAYOUTSTYLE_VerticalLayout) != 0; 1369 FX_BOOL bVerticalDoc = (dwStyles & FX_RTFLAYOUTSTYLE_VerticalLayout) != 0;
1370 FX_BOOL bVerticalChar = (dwStyles & FX_RTFLAYOUTSTYLE_VerticalChars) != 0; 1370 FX_BOOL bVerticalChar = (dwStyles & FX_RTFLAYOUTSTYLE_VerticalChars) != 0;
1371 FX_BOOL bArabicNumber = (dwStyles & FX_RTFLAYOUTSTYLE_ArabicNumber) != 0; 1371 FX_BOOL bArabicNumber = (dwStyles & FX_RTFLAYOUTSTYLE_ArabicNumber) != 0;
1372 FX_BOOL bMBCSCode = (dwStyles & FX_RTFLAYOUTSTYLE_MBCSCode) != 0; 1372 FX_BOOL bMBCSCode = (dwStyles & FX_RTFLAYOUTSTYLE_MBCSCode) != 0;
1373 int32_t iRotation = GetLineRotation(dwStyles) + pText->iCharRotation; 1373 int32_t iRotation = GetLineRotation(dwStyles) + pText->iCharRotation;
1374 int32_t iCharRotation; 1374 int32_t iCharRotation;
1375 FX_WCHAR wch, wPrev = 0xFEFF, wNext, wForm; 1375 FX_WCHAR wch, wPrev = 0xFEFF, wNext, wForm;
1376 int32_t iWidth, iCharWidth, iCharHeight; 1376 int32_t iWidth, iCharWidth, iCharHeight;
1377 FX_FLOAT fX, fY, fCharWidth, fCharHeight; 1377 FX_FLOAT fX, fY, fCharWidth, fCharHeight;
1378 int32_t iHorScale = pText->iHorizontalScale; 1378 int32_t iHorScale = pText->iHorizontalScale;
1379 int32_t iVerScale = pText->iVerticalScale; 1379 int32_t iVerScale = pText->iVerticalScale;
1380 FX_BOOL bEmptyChar; 1380 FX_BOOL bEmptyChar;
1381 FX_DWORD dwProps, dwCharType; 1381 uint32_t dwProps, dwCharType;
1382 fX = rtText.left; 1382 fX = rtText.left;
1383 fY = rtText.top; 1383 fY = rtText.top;
1384 if (bVerticalDoc) { 1384 if (bVerticalDoc) {
1385 fX += (rtText.width - fFontSize) / 2.0f; 1385 fX += (rtText.width - fFontSize) / 2.0f;
1386 if (bRTLPiece) { 1386 if (bRTLPiece) {
1387 fY = rtText.bottom(); 1387 fY = rtText.bottom();
1388 } 1388 }
1389 } else { 1389 } else {
1390 if (bRTLPiece) { 1390 if (bRTLPiece) {
1391 fX = rtText.right(); 1391 fX = rtText.right();
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1606 } 1606 }
1607 CFX_Rect bbox; 1607 CFX_Rect bbox;
1608 bbox.Set(0, 0, 0, 0); 1608 bbox.Set(0, 0, 0, 0);
1609 if (bCharBBox) { 1609 if (bCharBBox) {
1610 bCharBBox = pFont->GetBBox(bbox); 1610 bCharBBox = pFont->GetBBox(bbox);
1611 } 1611 }
1612 FX_FLOAT fLeft = std::max(0.0f, bbox.left * fScale); 1612 FX_FLOAT fLeft = std::max(0.0f, bbox.left * fScale);
1613 FX_FLOAT fHeight = FXSYS_fabs(bbox.height * fScale); 1613 FX_FLOAT fHeight = FXSYS_fabs(bbox.height * fScale);
1614 rtArray.RemoveAll(); 1614 rtArray.RemoveAll();
1615 rtArray.SetSize(iLength); 1615 rtArray.SetSize(iLength);
1616 FX_DWORD dwStyles = pText->dwLayoutStyles; 1616 uint32_t dwStyles = pText->dwLayoutStyles;
1617 FX_BOOL bVertical = (dwStyles & FX_RTFLAYOUTSTYLE_VerticalLayout) != 0; 1617 FX_BOOL bVertical = (dwStyles & FX_RTFLAYOUTSTYLE_VerticalLayout) != 0;
1618 FX_BOOL bSingleLine = (dwStyles & FX_RTFLAYOUTSTYLE_SingleLine) != 0; 1618 FX_BOOL bSingleLine = (dwStyles & FX_RTFLAYOUTSTYLE_SingleLine) != 0;
1619 FX_BOOL bCombText = (dwStyles & FX_TXTLAYOUTSTYLE_CombText) != 0; 1619 FX_BOOL bCombText = (dwStyles & FX_TXTLAYOUTSTYLE_CombText) != 0;
1620 FX_WCHAR wch, wLineBreakChar = pText->wLineBreakChar; 1620 FX_WCHAR wch, wLineBreakChar = pText->wLineBreakChar;
1621 int32_t iCharSize; 1621 int32_t iCharSize;
1622 FX_FLOAT fCharSize, fStart; 1622 FX_FLOAT fCharSize, fStart;
1623 if (bVertical) { 1623 if (bVertical) {
1624 fStart = bRTLPiece ? rect.bottom() : rect.top; 1624 fStart = bRTLPiece ? rect.bottom() : rect.top;
1625 } else { 1625 } else {
1626 fStart = bRTLPiece ? rect.right() : rect.left; 1626 fStart = bRTLPiece ? rect.right() : rect.left;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 rtBBoxF.height = fHeight; 1682 rtBBoxF.height = fHeight;
1683 rtBBoxF.top = std::max(rtBBoxF.top, 0.0f); 1683 rtBBoxF.top = std::max(rtBBoxF.top, 0.0f);
1684 } 1684 }
1685 rtArray.SetAt(i, rtBBoxF); 1685 rtArray.SetAt(i, rtBBoxF);
1686 continue; 1686 continue;
1687 } 1687 }
1688 rtArray.SetAt(i, rect); 1688 rtArray.SetAt(i, rect);
1689 } 1689 }
1690 return iLength; 1690 return iLength;
1691 } 1691 }
OLDNEW
« no previous file with comments | « xfa/fgas/layout/fgas_linebreak.cpp ('k') | xfa/fgas/layout/fgas_textbreak.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698