| OLD | NEW |
| 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 "../fgas_base.h" | 7 #include "../fgas_base.h" |
| 8 extern const FX_DWORD gs_FX_TextLayout_CodeProperties[65536]; | 8 |
| 9 extern const FX_LINEBREAKTYPE gs_FX_LineBreak_PairTable[64][32] = { | 9 extern const FX_LINEBREAKTYPE gs_FX_LineBreak_PairTable[64][32] = { |
| 10 {FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, | 10 {FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, |
| 11 FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, | 11 FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, |
| 12 FX_LBPB, FX_LBPB, FX_LBPB, FX_LBCP, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, | 12 FX_LBPB, FX_LBPB, FX_LBPB, FX_LBCP, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, |
| 13 FX_LBPB, FX_LBPB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN}, | 13 FX_LBPB, FX_LBPB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN}, |
| 14 {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, | 14 {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, |
| 15 FX_LBIB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, | 15 FX_LBIB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, |
| 16 FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB, | 16 FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB, |
| 17 FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN}, | 17 FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN}, |
| 18 {FX_LBPB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB, | 18 {FX_LBPB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB, |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 }; | 266 }; |
| 267 void FX_GetLineBreakPositions(const FX_WCHAR* pwsText, | 267 void FX_GetLineBreakPositions(const FX_WCHAR* pwsText, |
| 268 FX_LINEBREAKTYPE* pBrkType, | 268 FX_LINEBREAKTYPE* pBrkType, |
| 269 int32_t iLength) { | 269 int32_t iLength) { |
| 270 if (iLength < 2) { | 270 if (iLength < 2) { |
| 271 return; | 271 return; |
| 272 } | 272 } |
| 273 FX_DWORD dwCur, dwNext; | 273 FX_DWORD dwCur, dwNext; |
| 274 FX_WCHAR wch; | 274 FX_WCHAR wch; |
| 275 wch = *pwsText++; | 275 wch = *pwsText++; |
| 276 dwCur = gs_FX_TextLayout_CodeProperties[(FX_WORD)wch] & 0x003F; | 276 dwCur = kTextLayoutCodeProperties[(FX_WORD)wch] & 0x003F; |
| 277 iLength--; | 277 iLength--; |
| 278 for (int32_t i = 0; i < iLength; i++) { | 278 for (int32_t i = 0; i < iLength; i++) { |
| 279 wch = *pwsText++; | 279 wch = *pwsText++; |
| 280 dwNext = gs_FX_TextLayout_CodeProperties[(FX_WORD)wch] & 0x003F; | 280 dwNext = kTextLayoutCodeProperties[(FX_WORD)wch] & 0x003F; |
| 281 if (dwNext == FX_CBP_SP) { | 281 if (dwNext == FX_CBP_SP) { |
| 282 pBrkType[i] = FX_LBT_PROHIBITED_BRK; | 282 pBrkType[i] = FX_LBT_PROHIBITED_BRK; |
| 283 } else { | 283 } else { |
| 284 pBrkType[i] = *((const FX_LINEBREAKTYPE*)gs_FX_LineBreak_PairTable + | 284 pBrkType[i] = *((const FX_LINEBREAKTYPE*)gs_FX_LineBreak_PairTable + |
| 285 (dwCur << 5) + dwNext); | 285 (dwCur << 5) + dwNext); |
| 286 } | 286 } |
| 287 dwCur = dwNext; | 287 dwCur = dwNext; |
| 288 } | 288 } |
| 289 pBrkType[iLength] = FX_LBT_INDIRECT_BRK; | 289 pBrkType[iLength] = FX_LBT_INDIRECT_BRK; |
| 290 } | 290 } |
| 291 void FX_GetLineBreakPositions(const FX_WCHAR* pwsText, | 291 void FX_GetLineBreakPositions(const FX_WCHAR* pwsText, |
| 292 int32_t iLength, | 292 int32_t iLength, |
| 293 CFX_Int32MassArray& bp) { | 293 CFX_Int32MassArray& bp) { |
| 294 if (iLength < 2) { | 294 if (iLength < 2) { |
| 295 return; | 295 return; |
| 296 } | 296 } |
| 297 FX_LINEBREAKTYPE eType; | 297 FX_LINEBREAKTYPE eType; |
| 298 FX_DWORD dwCur, dwNext; | 298 FX_DWORD dwCur, dwNext; |
| 299 FX_WCHAR wch; | 299 FX_WCHAR wch; |
| 300 wch = *pwsText++; | 300 wch = *pwsText++; |
| 301 dwCur = gs_FX_TextLayout_CodeProperties[(FX_WORD)wch] & 0x003F; | 301 dwCur = kTextLayoutCodeProperties[(FX_WORD)wch] & 0x003F; |
| 302 iLength--; | 302 iLength--; |
| 303 for (int32_t i = 0; i < iLength; i++) { | 303 for (int32_t i = 0; i < iLength; i++) { |
| 304 wch = *pwsText++; | 304 wch = *pwsText++; |
| 305 dwNext = gs_FX_TextLayout_CodeProperties[(FX_WORD)wch] & 0x003F; | 305 dwNext = kTextLayoutCodeProperties[(FX_WORD)wch] & 0x003F; |
| 306 if (dwNext == FX_CBP_SP) { | 306 if (dwNext == FX_CBP_SP) { |
| 307 eType = FX_LBT_PROHIBITED_BRK; | 307 eType = FX_LBT_PROHIBITED_BRK; |
| 308 } else { | 308 } else { |
| 309 eType = *((const FX_LINEBREAKTYPE*)gs_FX_LineBreak_PairTable + | 309 eType = *((const FX_LINEBREAKTYPE*)gs_FX_LineBreak_PairTable + |
| 310 (dwCur << 5) + dwNext); | 310 (dwCur << 5) + dwNext); |
| 311 } | 311 } |
| 312 if (eType == FX_LBT_DIRECT_BRK) { | 312 if (eType == FX_LBT_DIRECT_BRK) { |
| 313 bp.Add(i); | 313 bp.Add(i); |
| 314 } | 314 } |
| 315 dwCur = dwNext; | 315 dwCur = dwNext; |
| 316 } | 316 } |
| 317 } | 317 } |
| OLD | NEW |