| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
| 6 | |
| 7 #ifndef CORE_FXCRT_INCLUDE_FX_ARABIC_H_ | |
| 8 #define CORE_FXCRT_INCLUDE_FX_ARABIC_H_ | |
| 9 | |
| 10 #include "core/fxcrt/include/fx_arb.h" | |
| 11 | |
| 12 #define FX_BIDIMAXLEVEL 61 | |
| 13 #define FX_BidiDirection(a) (FX_IsOdd(a) ? FX_BIDICLASS_R : FX_BIDICLASS_L) | |
| 14 #define FX_BidiGetDeferredType(a) (((a) >> 4) & 0x0F) | |
| 15 #define FX_BidiGetResolvedType(a) ((a)&0x0F) | |
| 16 | |
| 17 namespace pdfium { | |
| 18 namespace arabic { | |
| 19 | |
| 20 bool IsArabicChar(FX_WCHAR wch); | |
| 21 bool IsArabicFormChar(FX_WCHAR wch); | |
| 22 FX_WCHAR GetFormChar(FX_WCHAR wch, FX_WCHAR prev = 0, FX_WCHAR next = 0); | |
| 23 FX_WCHAR GetFormChar(const CFX_Char* cur, | |
| 24 const CFX_Char* prev, | |
| 25 const CFX_Char* next); | |
| 26 | |
| 27 } // namespace arabic | |
| 28 } // namespace pdfium | |
| 29 | |
| 30 void FX_BidiReverseString(CFX_WideString& wsText, | |
| 31 int32_t iStart, | |
| 32 int32_t iCount); | |
| 33 void FX_BidiSetDeferredRun(CFX_Int32Array& values, | |
| 34 int32_t iStart, | |
| 35 int32_t iCount, | |
| 36 int32_t iValue); | |
| 37 void FX_BidiClassify(const CFX_WideString& wsText, | |
| 38 CFX_Int32Array& classes, | |
| 39 FX_BOOL bWS = FALSE); | |
| 40 int32_t FX_BidiResolveExplicit(int32_t iBaseLevel, | |
| 41 int32_t iDirection, | |
| 42 CFX_Int32Array& classes, | |
| 43 CFX_Int32Array& levels, | |
| 44 int32_t iStart, | |
| 45 int32_t iCount, | |
| 46 int32_t iNest = 0); | |
| 47 | |
| 48 enum FX_BIDIWEAKSTATE { | |
| 49 FX_BIDIWEAKSTATE_xa = 0, | |
| 50 FX_BIDIWEAKSTATE_xr, | |
| 51 FX_BIDIWEAKSTATE_xl, | |
| 52 FX_BIDIWEAKSTATE_ao, | |
| 53 FX_BIDIWEAKSTATE_ro, | |
| 54 FX_BIDIWEAKSTATE_lo, | |
| 55 FX_BIDIWEAKSTATE_rt, | |
| 56 FX_BIDIWEAKSTATE_lt, | |
| 57 FX_BIDIWEAKSTATE_cn, | |
| 58 FX_BIDIWEAKSTATE_ra, | |
| 59 FX_BIDIWEAKSTATE_re, | |
| 60 FX_BIDIWEAKSTATE_la, | |
| 61 FX_BIDIWEAKSTATE_le, | |
| 62 FX_BIDIWEAKSTATE_ac, | |
| 63 FX_BIDIWEAKSTATE_rc, | |
| 64 FX_BIDIWEAKSTATE_rs, | |
| 65 FX_BIDIWEAKSTATE_lc, | |
| 66 FX_BIDIWEAKSTATE_ls, | |
| 67 FX_BIDIWEAKSTATE_ret, | |
| 68 FX_BIDIWEAKSTATE_let, | |
| 69 }; | |
| 70 #define FX_BWSxa FX_BIDIWEAKSTATE_xa | |
| 71 #define FX_BWSxr FX_BIDIWEAKSTATE_xr | |
| 72 #define FX_BWSxl FX_BIDIWEAKSTATE_xl | |
| 73 #define FX_BWSao FX_BIDIWEAKSTATE_ao | |
| 74 #define FX_BWSro FX_BIDIWEAKSTATE_ro | |
| 75 #define FX_BWSlo FX_BIDIWEAKSTATE_lo | |
| 76 #define FX_BWSrt FX_BIDIWEAKSTATE_rt | |
| 77 #define FX_BWSlt FX_BIDIWEAKSTATE_lt | |
| 78 #define FX_BWScn FX_BIDIWEAKSTATE_cn | |
| 79 #define FX_BWSra FX_BIDIWEAKSTATE_ra | |
| 80 #define FX_BWSre FX_BIDIWEAKSTATE_re | |
| 81 #define FX_BWSla FX_BIDIWEAKSTATE_la | |
| 82 #define FX_BWSle FX_BIDIWEAKSTATE_le | |
| 83 #define FX_BWSac FX_BIDIWEAKSTATE_ac | |
| 84 #define FX_BWSrc FX_BIDIWEAKSTATE_rc | |
| 85 #define FX_BWSrs FX_BIDIWEAKSTATE_rs | |
| 86 #define FX_BWSlc FX_BIDIWEAKSTATE_lc | |
| 87 #define FX_BWSls FX_BIDIWEAKSTATE_ls | |
| 88 #define FX_BWSret FX_BIDIWEAKSTATE_ret | |
| 89 #define FX_BWSlet FX_BIDIWEAKSTATE_let | |
| 90 | |
| 91 enum FX_BIDIWEAKACTION { | |
| 92 FX_BIDIWEAKACTION_IX = 0x100, | |
| 93 FX_BIDIWEAKACTION_XX = 0x0F, | |
| 94 FX_BIDIWEAKACTION_xxx = (0x0F << 4) + 0x0F, | |
| 95 FX_BIDIWEAKACTION_xIx = 0x100 + FX_BIDIWEAKACTION_xxx, | |
| 96 FX_BIDIWEAKACTION_xxN = (0x0F << 4) + FX_BIDICLASS_ON, | |
| 97 FX_BIDIWEAKACTION_xxE = (0x0F << 4) + FX_BIDICLASS_EN, | |
| 98 FX_BIDIWEAKACTION_xxA = (0x0F << 4) + FX_BIDICLASS_AN, | |
| 99 FX_BIDIWEAKACTION_xxR = (0x0F << 4) + FX_BIDICLASS_R, | |
| 100 FX_BIDIWEAKACTION_xxL = (0x0F << 4) + FX_BIDICLASS_L, | |
| 101 FX_BIDIWEAKACTION_Nxx = (FX_BIDICLASS_ON << 4) + 0x0F, | |
| 102 FX_BIDIWEAKACTION_Axx = (FX_BIDICLASS_AN << 4) + 0x0F, | |
| 103 FX_BIDIWEAKACTION_ExE = (FX_BIDICLASS_EN << 4) + FX_BIDICLASS_EN, | |
| 104 FX_BIDIWEAKACTION_NIx = (FX_BIDICLASS_ON << 4) + 0x0F + 0x100, | |
| 105 FX_BIDIWEAKACTION_NxN = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_ON, | |
| 106 FX_BIDIWEAKACTION_NxR = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_R, | |
| 107 FX_BIDIWEAKACTION_NxE = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_EN, | |
| 108 FX_BIDIWEAKACTION_AxA = (FX_BIDICLASS_AN << 4) + FX_BIDICLASS_AN, | |
| 109 FX_BIDIWEAKACTION_NxL = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_L, | |
| 110 FX_BIDIWEAKACTION_LxL = (FX_BIDICLASS_L << 4) + FX_BIDICLASS_L, | |
| 111 FX_BIDIWEAKACTION_xIL = (0x0F << 4) + FX_BIDICLASS_L + 0x100, | |
| 112 FX_BIDIWEAKACTION_AxR = (FX_BIDICLASS_AN << 4) + FX_BIDICLASS_R, | |
| 113 FX_BIDIWEAKACTION_Lxx = (FX_BIDICLASS_L << 4) + 0x0F, | |
| 114 }; | |
| 115 #define FX_BWAIX FX_BIDIWEAKACTION_IX | |
| 116 #define FX_BWAXX FX_BIDIWEAKACTION_XX | |
| 117 #define FX_BWAxxx FX_BIDIWEAKACTION_xxx | |
| 118 #define FX_BWAxIx FX_BIDIWEAKACTION_xIx | |
| 119 #define FX_BWAxxN FX_BIDIWEAKACTION_xxN | |
| 120 #define FX_BWAxxE FX_BIDIWEAKACTION_xxE | |
| 121 #define FX_BWAxxA FX_BIDIWEAKACTION_xxA | |
| 122 #define FX_BWAxxR FX_BIDIWEAKACTION_xxR | |
| 123 #define FX_BWAxxL FX_BIDIWEAKACTION_xxL | |
| 124 #define FX_BWANxx FX_BIDIWEAKACTION_Nxx | |
| 125 #define FX_BWAAxx FX_BIDIWEAKACTION_Axx | |
| 126 #define FX_BWAExE FX_BIDIWEAKACTION_ExE | |
| 127 #define FX_BWANIx FX_BIDIWEAKACTION_NIx | |
| 128 #define FX_BWANxN FX_BIDIWEAKACTION_NxN | |
| 129 #define FX_BWANxR FX_BIDIWEAKACTION_NxR | |
| 130 #define FX_BWANxE FX_BIDIWEAKACTION_NxE | |
| 131 #define FX_BWAAxA FX_BIDIWEAKACTION_AxA | |
| 132 #define FX_BWANxL FX_BIDIWEAKACTION_NxL | |
| 133 #define FX_BWALxL FX_BIDIWEAKACTION_LxL | |
| 134 #define FX_BWAxIL FX_BIDIWEAKACTION_xIL | |
| 135 #define FX_BWAAxR FX_BIDIWEAKACTION_AxR | |
| 136 #define FX_BWALxx FX_BIDIWEAKACTION_Lxx | |
| 137 | |
| 138 void FX_BidiResolveWeak(int32_t iBaseLevel, | |
| 139 CFX_Int32Array& classes, | |
| 140 CFX_Int32Array& levels); | |
| 141 enum FX_BIDINEUTRALSTATE { | |
| 142 FX_BIDINEUTRALSTATE_r = 0, | |
| 143 FX_BIDINEUTRALSTATE_l, | |
| 144 FX_BIDINEUTRALSTATE_rn, | |
| 145 FX_BIDINEUTRALSTATE_ln, | |
| 146 FX_BIDINEUTRALSTATE_a, | |
| 147 FX_BIDINEUTRALSTATE_na, | |
| 148 }; | |
| 149 #define FX_BNSr FX_BIDINEUTRALSTATE_r | |
| 150 #define FX_BNSl FX_BIDINEUTRALSTATE_l | |
| 151 #define FX_BNSrn FX_BIDINEUTRALSTATE_rn | |
| 152 #define FX_BNSln FX_BIDINEUTRALSTATE_ln | |
| 153 #define FX_BNSa FX_BIDINEUTRALSTATE_a | |
| 154 #define FX_BNSna FX_BIDINEUTRALSTATE_na | |
| 155 enum FX_BIDINEUTRALACTION { | |
| 156 FX_BIDINEUTRALACTION_nL = FX_BIDICLASS_L, | |
| 157 FX_BIDINEUTRALACTION_En = (FX_BIDICLASS_AN << 4), | |
| 158 FX_BIDINEUTRALACTION_Rn = (FX_BIDICLASS_R << 4), | |
| 159 FX_BIDINEUTRALACTION_Ln = (FX_BIDICLASS_L << 4), | |
| 160 FX_BIDINEUTRALACTION_In = FX_BIDIWEAKACTION_IX, | |
| 161 FX_BIDINEUTRALACTION_LnL = (FX_BIDICLASS_L << 4) + FX_BIDICLASS_L, | |
| 162 }; | |
| 163 #define FX_BNAnL FX_BIDINEUTRALACTION_nL | |
| 164 #define FX_BNAEn FX_BIDINEUTRALACTION_En | |
| 165 #define FX_BNARn FX_BIDINEUTRALACTION_Rn | |
| 166 #define FX_BNALn FX_BIDINEUTRALACTION_Ln | |
| 167 #define FX_BNAIn FX_BIDINEUTRALACTION_In | |
| 168 #define FX_BNALnL FX_BIDINEUTRALACTION_LnL | |
| 169 int32_t FX_BidiGetDeferredNeutrals(int32_t iAction, int32_t iLevel); | |
| 170 int32_t FX_BidiGetResolvedNeutrals(int32_t iAction); | |
| 171 void FX_BidiResolveNeutrals(int32_t iBaseLevel, | |
| 172 CFX_Int32Array& classes, | |
| 173 const CFX_Int32Array& levels); | |
| 174 void FX_BidiResolveImplicit(const CFX_Int32Array& classes, | |
| 175 CFX_Int32Array& levels); | |
| 176 void FX_BidiResolveWhitespace(int32_t iBaseLevel, | |
| 177 const CFX_Int32Array& classes, | |
| 178 CFX_Int32Array& levels); | |
| 179 int32_t FX_BidiReorderLevel(int32_t iBaseLevel, | |
| 180 CFX_WideString& wsText, | |
| 181 const CFX_Int32Array& levels, | |
| 182 int32_t iStart, | |
| 183 FX_BOOL bReverse = FALSE); | |
| 184 void FX_BidiReorder(int32_t iBaseLevel, | |
| 185 CFX_WideString& wsText, | |
| 186 const CFX_Int32Array& levels); | |
| 187 | |
| 188 #endif // CORE_FXCRT_INCLUDE_FX_ARABIC_H_ | |
| OLD | NEW |