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 #ifndef CORE_INCLUDE_FXCRT_FX_UCD_H_ | 7 #ifndef CORE_INCLUDE_FXCRT_FX_UCD_H_ |
8 #define CORE_INCLUDE_FXCRT_FX_UCD_H_ | 8 #define CORE_INCLUDE_FXCRT_FX_UCD_H_ |
9 | 9 |
10 #ifndef PDF_ENABLE_XFA | |
11 #include "fx_system.h" | |
12 #else | |
13 #include "fx_basic.h" | 10 #include "fx_basic.h" |
14 #endif | 11 |
| 12 #define FX_BIDICLASSBITS 6 |
| 13 #define FX_BIDICLASSBITSMASK (31 << FX_BIDICLASSBITS) |
| 14 enum FX_BIDICLASS { |
| 15 FX_BIDICLASS_ON = 0, // Other Neutral |
| 16 FX_BIDICLASS_L = 1, // Left Letter |
| 17 FX_BIDICLASS_R = 2, // Right Letter |
| 18 FX_BIDICLASS_AN = 3, // Arabic Number |
| 19 FX_BIDICLASS_EN = 4, // European Number |
| 20 FX_BIDICLASS_AL = 5, // Arabic Letter |
| 21 FX_BIDICLASS_NSM = 6, // Non-spacing Mark |
| 22 FX_BIDICLASS_CS = 7, // Common Number Separator |
| 23 FX_BIDICLASS_ES = 8, // European Separator |
| 24 FX_BIDICLASS_ET = 9, // European Number Terminator |
| 25 FX_BIDICLASS_BN = 10, // Boundary Neutral |
| 26 FX_BIDICLASS_S = 11, // Segment Separator |
| 27 FX_BIDICLASS_WS = 12, // Whitespace |
| 28 FX_BIDICLASS_B = 13, // Paragraph Separator |
| 29 FX_BIDICLASS_RLO = 14, // Right-to-Left Override |
| 30 FX_BIDICLASS_RLE = 15, // Right-to-Left Embedding |
| 31 FX_BIDICLASS_LRO = 16, // Left-to-Right Override |
| 32 FX_BIDICLASS_LRE = 17, // Left-to-Right Embedding |
| 33 FX_BIDICLASS_PDF = 18, // Pop Directional Format |
| 34 FX_BIDICLASS_N = FX_BIDICLASS_ON, |
| 35 }; |
| 36 |
| 37 extern const FX_DWORD kTextLayoutCodeProperties[]; |
| 38 extern const size_t kTextLayoutCodePropertiesSize; |
| 39 |
| 40 extern const FX_WCHAR kFXTextLayoutVerticalMirror[]; |
| 41 extern const size_t kFXTextLayoutVerticalMirrorSize; |
| 42 |
| 43 extern const FX_WCHAR kFXTextLayoutBidiMirror[]; |
| 44 extern const size_t kFXTextLayoutBidiMirrorSize; |
| 45 |
| 46 FX_DWORD FX_GetUnicodeProperties(FX_WCHAR wch); |
| 47 FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical); |
15 | 48 |
16 #ifdef PDF_ENABLE_XFA | 49 #ifdef PDF_ENABLE_XFA |
17 enum FX_CHARBREAKPROP { | 50 enum FX_CHARBREAKPROP { |
18 FX_CBP_OP = 0, | 51 FX_CBP_OP = 0, |
19 FX_CBP_CL = 1, | 52 FX_CBP_CL = 1, |
20 FX_CBP_QU = 2, | 53 FX_CBP_QU = 2, |
21 FX_CBP_GL = 3, | 54 FX_CBP_GL = 3, |
22 FX_CBP_NS = 4, | 55 FX_CBP_NS = 4, |
23 FX_CBP_EX = 5, | 56 FX_CBP_EX = 5, |
24 FX_CBP_SY = 6, | 57 FX_CBP_SY = 6, |
(...skipping 23 matching lines...) Expand all Loading... |
48 FX_CBP_NL = 29, | 81 FX_CBP_NL = 29, |
49 FX_CBP_SA = 30, | 82 FX_CBP_SA = 30, |
50 FX_CBP_SG = 31, | 83 FX_CBP_SG = 31, |
51 FX_CBP_CB = 32, | 84 FX_CBP_CB = 32, |
52 FX_CBP_XX = 33, | 85 FX_CBP_XX = 33, |
53 FX_CBP_AI = 34, | 86 FX_CBP_AI = 34, |
54 FX_CBP_SP = 35, | 87 FX_CBP_SP = 35, |
55 FX_CBP_TB = 37, | 88 FX_CBP_TB = 37, |
56 FX_CBP_NONE = 36, | 89 FX_CBP_NONE = 36, |
57 }; | 90 }; |
58 #endif | |
59 #define FX_BIDICLASSBITS 6 | |
60 #define FX_BIDICLASSBITSMASK (31 << FX_BIDICLASSBITS) | |
61 enum FX_BIDICLASS { | |
62 FX_BIDICLASS_ON = 0, // Other Neutral | |
63 FX_BIDICLASS_L = 1, // Left Letter | |
64 FX_BIDICLASS_R = 2, // Right Letter | |
65 FX_BIDICLASS_AN = 3, // Arabic Number | |
66 FX_BIDICLASS_EN = 4, // European Number | |
67 FX_BIDICLASS_AL = 5, // Arabic Letter | |
68 FX_BIDICLASS_NSM = 6, // Non-spacing Mark | |
69 FX_BIDICLASS_CS = 7, // Common Number Separator | |
70 FX_BIDICLASS_ES = 8, // European Separator | |
71 FX_BIDICLASS_ET = 9, // European Number Terminator | |
72 FX_BIDICLASS_BN = 10, // Boundary Neutral | |
73 FX_BIDICLASS_S = 11, // Segment Separator | |
74 FX_BIDICLASS_WS = 12, // Whitespace | |
75 FX_BIDICLASS_B = 13, // Paragraph Separator | |
76 FX_BIDICLASS_RLO = 14, // Right-to-Left Override | |
77 FX_BIDICLASS_RLE = 15, // Right-to-Left Embedding | |
78 FX_BIDICLASS_LRO = 16, // Left-to-Right Override | |
79 FX_BIDICLASS_LRE = 17, // Left-to-Right Embedding | |
80 FX_BIDICLASS_PDF = 18, // Pop Directional Format | |
81 FX_BIDICLASS_N = FX_BIDICLASS_ON, | |
82 }; | |
83 | 91 |
84 extern const FX_DWORD kTextLayoutCodeProperties[]; | |
85 extern const size_t kTextLayoutCodePropertiesSize; | |
86 | |
87 extern const FX_WCHAR kFXTextLayoutVerticalMirror[]; | |
88 extern const size_t kFXTextLayoutVerticalMirrorSize; | |
89 | |
90 extern const FX_WCHAR kFXTextLayoutBidiMirror[]; | |
91 extern const size_t kFXTextLayoutBidiMirrorSize; | |
92 | |
93 #ifdef PDF_ENABLE_XFA | |
94 #define FX_CHARTYPEBITS 11 | 92 #define FX_CHARTYPEBITS 11 |
95 #define FX_CHARTYPEBITSMASK (15 << FX_CHARTYPEBITS) | 93 #define FX_CHARTYPEBITSMASK (15 << FX_CHARTYPEBITS) |
96 enum FX_CHARTYPE { | 94 enum FX_CHARTYPE { |
97 FX_CHARTYPE_Unknown = 0, | 95 FX_CHARTYPE_Unknown = 0, |
98 FX_CHARTYPE_Tab = (1 << FX_CHARTYPEBITS), | 96 FX_CHARTYPE_Tab = (1 << FX_CHARTYPEBITS), |
99 FX_CHARTYPE_Space = (2 << FX_CHARTYPEBITS), | 97 FX_CHARTYPE_Space = (2 << FX_CHARTYPEBITS), |
100 FX_CHARTYPE_Control = (3 << FX_CHARTYPEBITS), | 98 FX_CHARTYPE_Control = (3 << FX_CHARTYPEBITS), |
101 FX_CHARTYPE_Combination = (4 << FX_CHARTYPEBITS), | 99 FX_CHARTYPE_Combination = (4 << FX_CHARTYPEBITS), |
102 FX_CHARTYPE_Numeric = (5 << FX_CHARTYPEBITS), | 100 FX_CHARTYPE_Numeric = (5 << FX_CHARTYPEBITS), |
103 FX_CHARTYPE_Normal = (6 << FX_CHARTYPEBITS), | 101 FX_CHARTYPE_Normal = (6 << FX_CHARTYPEBITS), |
104 FX_CHARTYPE_ArabicAlef = (7 << FX_CHARTYPEBITS), | 102 FX_CHARTYPE_ArabicAlef = (7 << FX_CHARTYPEBITS), |
105 FX_CHARTYPE_ArabicSpecial = (8 << FX_CHARTYPEBITS), | 103 FX_CHARTYPE_ArabicSpecial = (8 << FX_CHARTYPEBITS), |
106 FX_CHARTYPE_ArabicDistortion = (9 << FX_CHARTYPEBITS), | 104 FX_CHARTYPE_ArabicDistortion = (9 << FX_CHARTYPEBITS), |
107 FX_CHARTYPE_ArabicNormal = (10 << FX_CHARTYPEBITS), | 105 FX_CHARTYPE_ArabicNormal = (10 << FX_CHARTYPEBITS), |
108 FX_CHARTYPE_ArabicForm = (11 << FX_CHARTYPEBITS), | 106 FX_CHARTYPE_ArabicForm = (11 << FX_CHARTYPEBITS), |
109 FX_CHARTYPE_Arabic = (12 << FX_CHARTYPEBITS), | 107 FX_CHARTYPE_Arabic = (12 << FX_CHARTYPEBITS), |
110 }; | 108 }; |
111 | 109 |
112 #endif | |
113 FX_DWORD FX_GetUnicodeProperties(FX_WCHAR wch); | |
114 #ifdef PDF_ENABLE_XFA | |
115 FX_BOOL FX_IsCtrlCode(FX_WCHAR ch); | 110 FX_BOOL FX_IsCtrlCode(FX_WCHAR ch); |
116 #endif | |
117 FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical); | |
118 #ifdef PDF_ENABLE_XFA | |
119 FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, | 111 FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, |
120 FX_DWORD dwProps, | 112 FX_DWORD dwProps, |
121 FX_BOOL bRTL, | 113 FX_BOOL bRTL, |
122 FX_BOOL bVertical); | 114 FX_BOOL bVertical); |
123 class CFX_Char { | 115 class CFX_Char { |
124 public: | 116 public: |
125 CFX_Char() | 117 CFX_Char() |
126 : m_wCharCode(0), | 118 : m_wCharCode(0), |
127 m_nBreakType(0), | 119 m_nBreakType(0), |
128 m_nRotation(0), | 120 m_nRotation(0), |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 int32_t m_iFontHeight; | 179 int32_t m_iFontHeight; |
188 int16_t m_iBidiClass; | 180 int16_t m_iBidiClass; |
189 int16_t m_iBidiLevel; | 181 int16_t m_iBidiLevel; |
190 int16_t m_iBidiPos; | 182 int16_t m_iBidiPos; |
191 int16_t m_iBidiOrder; | 183 int16_t m_iBidiOrder; |
192 FX_DWORD m_dwLayoutStyles; | 184 FX_DWORD m_dwLayoutStyles; |
193 FX_DWORD m_dwIdentity; | 185 FX_DWORD m_dwIdentity; |
194 IFX_Unknown* m_pUserData; | 186 IFX_Unknown* m_pUserData; |
195 }; | 187 }; |
196 typedef CFX_ArrayTemplate<CFX_RTFChar> CFX_RTFCharArray; | 188 typedef CFX_ArrayTemplate<CFX_RTFChar> CFX_RTFCharArray; |
197 #endif | 189 #endif // PDF_ENABLE_XFA |
198 | 190 |
199 #endif // CORE_INCLUDE_FXCRT_FX_UCD_H_ | 191 #endif // CORE_INCLUDE_FXCRT_FX_UCD_H_ |
OLD | NEW |