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 "core/fxcrt/fx_arabic.h" | 7 #include "core/fxcrt/fx_arabic.h" |
8 #include "core/include/fxcrt/fx_ucd.h" | 8 #include "core/include/fxcrt/fx_ucd.h" |
9 | 9 |
10 namespace { | 10 namespace { |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 } | 143 } |
144 } | 144 } |
145 return shadda; | 145 return shadda; |
146 } | 146 } |
147 | 147 |
148 IFX_ArabicChar* IFX_ArabicChar::Create() { | 148 IFX_ArabicChar* IFX_ArabicChar::Create() { |
149 return new CFX_ArabicChar; | 149 return new CFX_ArabicChar; |
150 } | 150 } |
151 FX_BOOL CFX_ArabicChar::IsArabicChar(FX_WCHAR wch) const { | 151 FX_BOOL CFX_ArabicChar::IsArabicChar(FX_WCHAR wch) const { |
152 FX_DWORD dwRet = | 152 FX_DWORD dwRet = |
153 kTextLayoutCodeProperties[(FX_WORD)wch] & FX_CHARTYPEBITSMASK; | 153 kTextLayoutCodeProperties[(uint16_t)wch] & FX_CHARTYPEBITSMASK; |
154 return dwRet >= FX_CHARTYPE_ArabicAlef; | 154 return dwRet >= FX_CHARTYPE_ArabicAlef; |
155 } | 155 } |
156 FX_BOOL CFX_ArabicChar::IsArabicFormChar(FX_WCHAR wch) const { | 156 FX_BOOL CFX_ArabicChar::IsArabicFormChar(FX_WCHAR wch) const { |
157 return (kTextLayoutCodeProperties[(FX_WORD)wch] & FX_CHARTYPEBITSMASK) == | 157 return (kTextLayoutCodeProperties[(uint16_t)wch] & FX_CHARTYPEBITSMASK) == |
158 FX_CHARTYPE_ArabicForm; | 158 FX_CHARTYPE_ArabicForm; |
159 } | 159 } |
160 FX_WCHAR CFX_ArabicChar::GetFormChar(FX_WCHAR wch, | 160 FX_WCHAR CFX_ArabicChar::GetFormChar(FX_WCHAR wch, |
161 FX_WCHAR prev, | 161 FX_WCHAR prev, |
162 FX_WCHAR next) const { | 162 FX_WCHAR next) const { |
163 CFX_Char c(wch, kTextLayoutCodeProperties[(FX_WORD)wch]); | 163 CFX_Char c(wch, kTextLayoutCodeProperties[(uint16_t)wch]); |
164 CFX_Char p(prev, kTextLayoutCodeProperties[(FX_WORD)prev]); | 164 CFX_Char p(prev, kTextLayoutCodeProperties[(uint16_t)prev]); |
165 CFX_Char n(next, kTextLayoutCodeProperties[(FX_WORD)next]); | 165 CFX_Char n(next, kTextLayoutCodeProperties[(uint16_t)next]); |
166 return GetFormChar(&c, &p, &n); | 166 return GetFormChar(&c, &p, &n); |
167 } | 167 } |
168 FX_WCHAR CFX_ArabicChar::GetFormChar(const CFX_Char* cur, | 168 FX_WCHAR CFX_ArabicChar::GetFormChar(const CFX_Char* cur, |
169 const CFX_Char* prev, | 169 const CFX_Char* prev, |
170 const CFX_Char* next) const { | 170 const CFX_Char* next) const { |
171 FX_CHARTYPE eCur; | 171 FX_CHARTYPE eCur; |
172 FX_WCHAR wCur; | 172 FX_WCHAR wCur; |
173 const FX_ARBFORMTABLE* ft = ParseChar(cur, wCur, eCur); | 173 const FX_ARBFORMTABLE* ft = ParseChar(cur, wCur, eCur); |
174 if (eCur < FX_CHARTYPE_ArabicAlef || eCur >= FX_CHARTYPE_ArabicNormal) { | 174 if (eCur < FX_CHARTYPE_ArabicAlef || eCur >= FX_CHARTYPE_ArabicNormal) { |
175 return wCur; | 175 return wCur; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 FX_BOOL bWS) { | 255 FX_BOOL bWS) { |
256 FXSYS_assert(wsText.GetLength() == classes.GetSize()); | 256 FXSYS_assert(wsText.GetLength() == classes.GetSize()); |
257 int32_t iCount = wsText.GetLength(); | 257 int32_t iCount = wsText.GetLength(); |
258 const FX_WCHAR* pwsStart = (const FX_WCHAR*)wsText; | 258 const FX_WCHAR* pwsStart = (const FX_WCHAR*)wsText; |
259 FX_WCHAR wch; | 259 FX_WCHAR wch; |
260 int32_t iCls; | 260 int32_t iCls; |
261 if (bWS) { | 261 if (bWS) { |
262 for (int32_t i = 0; i < iCount; i++) { | 262 for (int32_t i = 0; i < iCount; i++) { |
263 wch = *pwsStart++; | 263 wch = *pwsStart++; |
264 iCls = | 264 iCls = |
265 ((kTextLayoutCodeProperties[(FX_WORD)wch] & FX_BIDICLASSBITSMASK) >> | 265 ((kTextLayoutCodeProperties[(uint16_t)wch] & FX_BIDICLASSBITSMASK) >> |
266 FX_BIDICLASSBITS); | 266 FX_BIDICLASSBITS); |
267 classes.SetAt(i, iCls); | 267 classes.SetAt(i, iCls); |
268 } | 268 } |
269 } else { | 269 } else { |
270 for (int32_t i = 0; i < iCount; i++) { | 270 for (int32_t i = 0; i < iCount; i++) { |
271 wch = *pwsStart++; | 271 wch = *pwsStart++; |
272 iCls = | 272 iCls = |
273 ((kTextLayoutCodeProperties[(FX_WORD)wch] & FX_BIDICLASSBITSMASK) >> | 273 ((kTextLayoutCodeProperties[(uint16_t)wch] & FX_BIDICLASSBITSMASK) >> |
274 FX_BIDICLASSBITS); | 274 FX_BIDICLASSBITS); |
275 classes.SetAt(i, gc_FX_BidiNTypes[iCls]); | 275 classes.SetAt(i, gc_FX_BidiNTypes[iCls]); |
276 } | 276 } |
277 } | 277 } |
278 } | 278 } |
279 int32_t FX_BidiResolveExplicit(int32_t iBaseLevel, | 279 int32_t FX_BidiResolveExplicit(int32_t iBaseLevel, |
280 int32_t iDirection, | 280 int32_t iDirection, |
281 CFX_Int32Array& classes, | 281 CFX_Int32Array& classes, |
282 CFX_Int32Array& levels, | 282 CFX_Int32Array& levels, |
283 int32_t iStart, | 283 int32_t iStart, |
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
961 } | 961 } |
962 }; | 962 }; |
963 void FX_BidiLine(CFX_TxtCharArray& chars, int32_t iCount, int32_t iBaseLevel) { | 963 void FX_BidiLine(CFX_TxtCharArray& chars, int32_t iCount, int32_t iBaseLevel) { |
964 CFX_BidiLineTemplate<CFX_TxtChar> blt; | 964 CFX_BidiLineTemplate<CFX_TxtChar> blt; |
965 blt.FX_BidiLine(chars, iCount, iBaseLevel); | 965 blt.FX_BidiLine(chars, iCount, iBaseLevel); |
966 } | 966 } |
967 void FX_BidiLine(CFX_RTFCharArray& chars, int32_t iCount, int32_t iBaseLevel) { | 967 void FX_BidiLine(CFX_RTFCharArray& chars, int32_t iCount, int32_t iBaseLevel) { |
968 CFX_BidiLineTemplate<CFX_RTFChar> blt; | 968 CFX_BidiLineTemplate<CFX_RTFChar> blt; |
969 blt.FX_BidiLine(chars, iCount, iBaseLevel); | 969 blt.FX_BidiLine(chars, iCount, iBaseLevel); |
970 } | 970 } |
OLD | NEW |