Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / core / include / fxcrt / fx_ucd.h
index 9e1862a..c87e459 100644 (file)
@@ -88,6 +88,20 @@ enum FX_CHARTYPE {
     FX_CHARTYPE_ArabicForm                     = (11 << FX_CHARTYPEBITS),
     FX_CHARTYPE_Arabic                         = (12 << FX_CHARTYPEBITS),
 };
+typedef struct _FX_CHARPROPERTIES {\r
+    union FX_CHARPROPERTIES_UNION{\r
+        struct FX_CHARPROPERTIES_BIT{\r
+            FX_DWORD   dwBreakType             : 6;\r
+            FX_DWORD   dwBidiClass             : 5;\r
+            FX_DWORD   dwCharType              : 4;\r
+            FX_DWORD   dwRotation              : 1;\r
+            FX_DWORD   dwCJKSpecial    : 1;\r
+            FX_DWORD   dwVertIndex             : 6;\r
+            FX_DWORD   dwBidiIndex             : 9;\r
+        };\r
+        FX_DWORD       dwCharProps;\r
+    };\r
+} FX_CHARPROPERTIES;\r
 FX_DWORD FX_GetUnicodeProperties(FX_WCHAR wch);
 FX_BOOL        FX_IsCtrlCode(FX_WCHAR ch);
 FX_BOOL        FX_IsRotationCode(FX_WCHAR ch);
@@ -95,4 +109,89 @@ FX_BOOL FX_IsCombinationChar(FX_WCHAR wch);
 FX_BOOL        FX_IsBidiChar(FX_WCHAR wch);
 FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical);
 FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_DWORD dwProps, FX_BOOL bRTL, FX_BOOL bVertical);
+class CFX_Char : public CFX_Object\r
+{\r
+public:\r
+    CFX_Char() : m_wCharCode(0)\r
+        , m_nBreakType(0)\r
+        , m_nRotation(0)\r
+        , m_dwCharProps(0)\r
+        , m_dwCharStyles(0)\r
+        , m_iCharWidth(0)\r
+        , m_iHorizontalScale(100)\r
+        , m_iVertialScale(100)\r
+    {\r
+    }\r
+    CFX_Char(FX_WORD wCharCode, FX_DWORD dwCharProps)\r
+        : m_wCharCode(wCharCode)\r
+        , m_nBreakType(0)\r
+        , m_nRotation(0)\r
+        , m_dwCharProps(dwCharProps)\r
+        , m_dwCharStyles(0)\r
+        , m_iCharWidth(0)\r
+        , m_iHorizontalScale(100)\r
+        , m_iVertialScale(100)\r
+    {\r
+    }\r
+    FX_DWORD   GetCharType() const\r
+    {\r
+        return m_dwCharProps & FX_CHARTYPEBITSMASK;\r
+    }\r
+    FX_WORD            m_wCharCode;\r
+    FX_BYTE            m_nBreakType;\r
+    FX_INT8            m_nRotation;\r
+    FX_DWORD   m_dwCharProps;\r
+    FX_DWORD   m_dwCharStyles;\r
+    FX_INT32   m_iCharWidth;\r
+    FX_INT32   m_iHorizontalScale;\r
+    FX_INT32   m_iVertialScale;\r
+};\r
+typedef CFX_ArrayTemplate<CFX_Char>    CFX_CharArray;\r
+class CFX_TxtChar : public CFX_Char\r
+{\r
+public:\r
+    CFX_TxtChar() : CFX_Char()\r
+        , m_dwStatus(0)\r
+        , m_iBidiClass(0)\r
+        , m_iBidiLevel(0)\r
+        , m_iBidiPos(0)\r
+        , m_iBidiOrder(0)\r
+        , m_pUserData(NULL)\r
+    {\r
+    }\r
+    FX_DWORD                   m_dwStatus;\r
+    FX_INT16                   m_iBidiClass;\r
+    FX_INT16                   m_iBidiLevel;\r
+    FX_INT16                   m_iBidiPos;\r
+    FX_INT16                   m_iBidiOrder;\r
+    FX_LPVOID                  m_pUserData;\r
+};\r
+typedef CFX_ArrayTemplate<CFX_TxtChar> CFX_TxtCharArray;\r
+class CFX_RTFChar : public CFX_Char\r
+{\r
+public:\r
+    CFX_RTFChar() : CFX_Char()\r
+        , m_dwStatus(0)\r
+        , m_iFontSize(0)\r
+        , m_iFontHeight(0)\r
+        , m_iBidiClass(0)\r
+        , m_iBidiLevel(0)\r
+        , m_iBidiPos(0)\r
+        , m_dwLayoutStyles(0)\r
+        , m_dwIdentity(0)\r
+        , m_pUserData(NULL)\r
+    {\r
+    }\r
+    FX_DWORD                   m_dwStatus;\r
+    FX_INT32                   m_iFontSize;\r
+    FX_INT32                   m_iFontHeight;\r
+    FX_INT16                   m_iBidiClass;\r
+    FX_INT16                   m_iBidiLevel;\r
+    FX_INT16                   m_iBidiPos;\r
+    FX_INT16                   m_iBidiOrder;\r
+    FX_DWORD                   m_dwLayoutStyles;\r
+    FX_DWORD                   m_dwIdentity;\r
+    IFX_Unknown                        *m_pUserData;\r
+};\r
+typedef CFX_ArrayTemplate<CFX_RTFChar> CFX_RTFCharArray;\r
 #endif