diff options
author | Bo Xu <bo_xu@foxitsoftware.com> | 2014-10-28 23:03:33 -0700 |
---|---|---|
committer | Bo Xu <bo_xu@foxitsoftware.com> | 2014-11-03 11:10:11 -0800 |
commit | fdc00a7042d912aafaabddae4d9c84199921ef23 (patch) | |
tree | 32ab8ac91cc68d2cd15b9168782a71b3f3f5e7b9 /core/include/fxcrt | |
parent | e9b38fa38de2c95d8260be31c57d9272c4d127ed (diff) | |
download | pdfium-fdc00a7042d912aafaabddae4d9c84199921ef23.tar.xz |
Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
Diffstat (limited to 'core/include/fxcrt')
-rw-r--r-- | core/include/fxcrt/fx_arb.h | 48 | ||||
-rw-r--r-- | core/include/fxcrt/fx_basic.h | 7 | ||||
-rw-r--r-- | core/include/fxcrt/fx_ext.h | 18 | ||||
-rw-r--r-- | core/include/fxcrt/fx_stream.h | 9 | ||||
-rw-r--r-- | core/include/fxcrt/fx_ucd.h | 99 |
5 files changed, 181 insertions, 0 deletions
diff --git a/core/include/fxcrt/fx_arb.h b/core/include/fxcrt/fx_arb.h index 4950f81716..ed0370ff74 100644 --- a/core/include/fxcrt/fx_arb.h +++ b/core/include/fxcrt/fx_arb.h @@ -6,6 +6,54 @@ #ifndef _FX_ARABIC_ #define _FX_ARABIC_ +class IFX_ArabicChar; +class IFX_BidiChar; +#ifdef __cplusplus +extern "C" +{ +#endif +typedef struct _FX_ARBFORMTABLE { + FX_WCHAR wIsolated; + FX_WCHAR wFinal; + FX_WCHAR wInitial; + FX_WCHAR wMedial; +} FX_ARBFORMTABLE, * FX_LPARBFORMTABLE; +typedef FX_ARBFORMTABLE const * FX_LPCARBFORMTABLE; +typedef struct _FX_ARAALEF { + FX_WCHAR wAlef; + FX_WCHAR wIsolated; +} FX_ARAALEF, * FX_LPARAALEF; +typedef FX_ARAALEF const * FX_LPCARAALEF; +typedef struct _FX_ARASHADDA { + FX_WCHAR wShadda; + FX_WCHAR wIsolated; +} FX_ARASHADDA, * FX_LPARASHADDA; +typedef FX_ARASHADDA const * FX_LPCARASHADDA; +FX_LPCARBFORMTABLE FX_GetArabicFormTable(FX_WCHAR unicode); +FX_WCHAR FX_GetArabicFromAlefTable(FX_WCHAR alef); +FX_WCHAR FX_GetArabicFromShaddaTable(FX_WCHAR shadda); +#ifdef __cplusplus +}; +#endif +enum FX_ARBPOSITION { + FX_ARBPOSITION_Isolated = 0, + FX_ARBPOSITION_Final, + FX_ARBPOSITION_Initial, + FX_ARBPOSITION_Medial, +}; +class IFX_ArabicChar +{ +public: + static IFX_ArabicChar* Create(); + virtual void Release() = 0; + virtual FX_BOOL IsArabicChar(FX_WCHAR wch) const = 0; + virtual FX_BOOL IsArabicFormChar(FX_WCHAR wch) const = 0; + virtual FX_WCHAR GetFormChar(FX_WCHAR wch, FX_WCHAR prev = 0, FX_WCHAR next = 0) const = 0; + virtual FX_WCHAR GetFormChar(const CFX_Char *cur, const CFX_Char *prev, const CFX_Char *next) const = 0; +}; +void FX_BidiLine(CFX_WideString &wsText, FX_INT32 iBaseLevel = 0); +void FX_BidiLine(CFX_TxtCharArray &chars, FX_INT32 iCount, FX_INT32 iBaseLevel = 0); +void FX_BidiLine(CFX_RTFCharArray &chars, FX_INT32 iCount, FX_INT32 iBaseLevel = 0); class IFX_BidiChar { public: diff --git a/core/include/fxcrt/fx_basic.h b/core/include/fxcrt/fx_basic.h index 22ba611a77..0c84f540e9 100644 --- a/core/include/fxcrt/fx_basic.h +++ b/core/include/fxcrt/fx_basic.h @@ -1578,6 +1578,13 @@ typedef enum { } FX_ProgressiveStatus; #define ProgressiveStatus FX_ProgressiveStatus #define FX_NAMESPACE_DECLARE(namespace, type) namespace::type +class IFX_Unknown +{ +public: + virtual FX_DWORD Release() = 0; + virtual FX_DWORD AddRef() = 0; +}; +#define FX_IsOdd(a) ((a) & 1) class CFX_Vector_3by1 : public CFX_Object { diff --git a/core/include/fxcrt/fx_ext.h b/core/include/fxcrt/fx_ext.h index 03ec488135..ceba015b59 100644 --- a/core/include/fxcrt/fx_ext.h +++ b/core/include/fxcrt/fx_ext.h @@ -76,6 +76,24 @@ void FX_Random_GenerateCrypto(FX_LPDWORD pBuffer, FX_INT32 iCount); #ifdef __cplusplus } #endif +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct FX_GUID { + FX_DWORD data1; + FX_WORD data2; + FX_WORD data3; + FX_BYTE data4[8]; +} FX_GUID, * FX_LPGUID; +typedef FX_GUID const * FX_LPCGUID; + +void FX_GUID_CreateV4(FX_LPGUID pGUID); + +void FX_GUID_ToString(FX_LPCGUID pGUID, CFX_ByteString &bsStr, FX_BOOL bSeparator = TRUE); +#ifdef __cplusplus +} +#endif template<class baseType> class CFX_SSortTemplate { diff --git a/core/include/fxcrt/fx_stream.h b/core/include/fxcrt/fx_stream.h index 8e298f7727..0a3d1c4609 100644 --- a/core/include/fxcrt/fx_stream.h +++ b/core/include/fxcrt/fx_stream.h @@ -162,6 +162,15 @@ public: }; IFX_FileStream* FX_CreateFileStream(FX_LPCSTR filename, FX_DWORD dwModes); IFX_FileStream* FX_CreateFileStream(FX_LPCWSTR filename, FX_DWORD dwModes); +class IFX_FileAccess +{ +public: + virtual void Release() = 0; + virtual IFX_FileAccess* Retain() = 0; + virtual void GetPath(CFX_WideString& wsPath) = 0; + virtual IFX_FileStream* CreateFileStream(FX_DWORD dwModes) = 0; +}; +IFX_FileAccess* FX_CreateDefaultFileAccess(FX_WSTR wsPath); class IFX_MemoryStream : public IFX_FileStream { public: diff --git a/core/include/fxcrt/fx_ucd.h b/core/include/fxcrt/fx_ucd.h index 9e1862aa80..c87e459aa5 100644 --- a/core/include/fxcrt/fx_ucd.h +++ b/core/include/fxcrt/fx_ucd.h @@ -88,6 +88,20 @@ enum FX_CHARTYPE { FX_CHARTYPE_ArabicForm = (11 << FX_CHARTYPEBITS), FX_CHARTYPE_Arabic = (12 << FX_CHARTYPEBITS), }; +typedef struct _FX_CHARPROPERTIES {
+ union FX_CHARPROPERTIES_UNION{
+ struct FX_CHARPROPERTIES_BIT{
+ FX_DWORD dwBreakType : 6;
+ FX_DWORD dwBidiClass : 5;
+ FX_DWORD dwCharType : 4;
+ FX_DWORD dwRotation : 1;
+ FX_DWORD dwCJKSpecial : 1;
+ FX_DWORD dwVertIndex : 6;
+ FX_DWORD dwBidiIndex : 9;
+ };
+ FX_DWORD dwCharProps;
+ };
+} FX_CHARPROPERTIES;
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
+{
+public:
+ CFX_Char() : m_wCharCode(0)
+ , m_nBreakType(0)
+ , m_nRotation(0)
+ , m_dwCharProps(0)
+ , m_dwCharStyles(0)
+ , m_iCharWidth(0)
+ , m_iHorizontalScale(100)
+ , m_iVertialScale(100)
+ {
+ }
+ CFX_Char(FX_WORD wCharCode, FX_DWORD dwCharProps)
+ : m_wCharCode(wCharCode)
+ , m_nBreakType(0)
+ , m_nRotation(0)
+ , m_dwCharProps(dwCharProps)
+ , m_dwCharStyles(0)
+ , m_iCharWidth(0)
+ , m_iHorizontalScale(100)
+ , m_iVertialScale(100)
+ {
+ }
+ FX_DWORD GetCharType() const
+ {
+ return m_dwCharProps & FX_CHARTYPEBITSMASK;
+ }
+ FX_WORD m_wCharCode;
+ FX_BYTE m_nBreakType;
+ FX_INT8 m_nRotation;
+ FX_DWORD m_dwCharProps;
+ FX_DWORD m_dwCharStyles;
+ FX_INT32 m_iCharWidth;
+ FX_INT32 m_iHorizontalScale;
+ FX_INT32 m_iVertialScale;
+};
+typedef CFX_ArrayTemplate<CFX_Char> CFX_CharArray;
+class CFX_TxtChar : public CFX_Char
+{
+public:
+ CFX_TxtChar() : CFX_Char()
+ , m_dwStatus(0)
+ , m_iBidiClass(0)
+ , m_iBidiLevel(0)
+ , m_iBidiPos(0)
+ , m_iBidiOrder(0)
+ , m_pUserData(NULL)
+ {
+ }
+ FX_DWORD m_dwStatus;
+ FX_INT16 m_iBidiClass;
+ FX_INT16 m_iBidiLevel;
+ FX_INT16 m_iBidiPos;
+ FX_INT16 m_iBidiOrder;
+ FX_LPVOID m_pUserData;
+};
+typedef CFX_ArrayTemplate<CFX_TxtChar> CFX_TxtCharArray;
+class CFX_RTFChar : public CFX_Char
+{
+public:
+ CFX_RTFChar() : CFX_Char()
+ , m_dwStatus(0)
+ , m_iFontSize(0)
+ , m_iFontHeight(0)
+ , m_iBidiClass(0)
+ , m_iBidiLevel(0)
+ , m_iBidiPos(0)
+ , m_dwLayoutStyles(0)
+ , m_dwIdentity(0)
+ , m_pUserData(NULL)
+ {
+ }
+ FX_DWORD m_dwStatus;
+ FX_INT32 m_iFontSize;
+ FX_INT32 m_iFontHeight;
+ FX_INT16 m_iBidiClass;
+ FX_INT16 m_iBidiLevel;
+ FX_INT16 m_iBidiPos;
+ FX_INT16 m_iBidiOrder;
+ FX_DWORD m_dwLayoutStyles;
+ FX_DWORD m_dwIdentity;
+ IFX_Unknown *m_pUserData;
+};
+typedef CFX_ArrayTemplate<CFX_RTFChar> CFX_RTFCharArray;
#endif |