summaryrefslogtreecommitdiff
path: root/xfa/src/fgas/include/fx_cpg.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/src/fgas/include/fx_cpg.h')
-rw-r--r--xfa/src/fgas/include/fx_cpg.h248
1 files changed, 248 insertions, 0 deletions
diff --git a/xfa/src/fgas/include/fx_cpg.h b/xfa/src/fgas/include/fx_cpg.h
new file mode 100644
index 0000000000..357ffd820a
--- /dev/null
+++ b/xfa/src/fgas/include/fx_cpg.h
@@ -0,0 +1,248 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef _FX_CODEPAGE
+#define _FX_CODEPAGE
+class IFX_CodePage;
+#define FX_CODEPAGE_DefANSI 0
+#define FX_CODEPAGE_DefOEM 1
+#define FX_CODEPAGE_DefMAC 2
+#define FX_CODEPAGE_Thread 3
+#define FX_CODEPAGE_Symbol 42
+#define FX_CODEPAGE_MSDOS_US 437
+#define FX_CODEPAGE_Arabic_ASMO708 708
+#define FX_CODEPAGE_Arabic_ASMO449Plus 709
+#define FX_CODEPAGE_Arabic_Transparent 710
+#define FX_CODEPAGE_Arabic_NafithaEnhanced 711
+#define FX_CODEPAGE_Arabic_TransparentASMO 720
+#define FX_CODEPAGE_MSDOS_Greek1 737
+#define FX_CODEPAGE_MSDOS_Baltic 775
+#define FX_CODEPAGE_MSWin31_WesternEuropean 819
+#define FX_CODEPAGE_MSDOS_WesternEuropean 850
+#define FX_CODEPAGE_MSDOS_EasternEuropean 852
+#define FX_CODEPAGE_MSDOS_Latin3 853
+#define FX_CODEPAGE_MSDOS_Cyrillic 855
+#define FX_CODEPAGE_MSDOS_Turkish 857
+#define FX_CODEPAGE_MSDOS_Latin1Euro 858
+#define FX_CODEPAGE_MSDOS_Portuguese 860
+#define FX_CODEPAGE_MSDOS_Icelandic 861
+#define FX_CODEPAGE_MSDOS_Hebrew 862
+#define FX_CODEPAGE_MSDOS_FrenchCanadian 863
+#define FX_CODEPAGE_MSDOS_Arabic 864
+#define FX_CODEPAGE_MSDOS_Norwegian 865
+#define FX_CODEPAGE_MSDOS_Russian 866
+#define FX_CODEPAGE_MSDOS_Greek2 869
+#define FX_CODEPAGE_MSDOS_Thai 874
+#define FX_CODEPAGE_MSDOS_KamenickyCS 895
+#define FX_CODEPAGE_ShiftJIS 932
+#define FX_CODEPAGE_ChineseSimplified 936
+#define FX_CODEPAGE_Korean 949
+#define FX_CODEPAGE_ChineseTraditional 950
+#define FX_CODEPAGE_UTF16LE 1200
+#define FX_CODEPAGE_UTF16BE 1201
+#define FX_CODEPAGE_MSWin_EasternEuropean 1250
+#define FX_CODEPAGE_MSWin_Cyrillic 1251
+#define FX_CODEPAGE_MSWin_WesternEuropean 1252
+#define FX_CODEPAGE_MSWin_Greek 1253
+#define FX_CODEPAGE_MSWin_Turkish 1254
+#define FX_CODEPAGE_MSWin_Hebrew 1255
+#define FX_CODEPAGE_MSWin_Arabic 1256
+#define FX_CODEPAGE_MSWin_Baltic 1257
+#define FX_CODEPAGE_MSWin_Vietnamese 1258
+#define FX_CODEPAGE_Johab 1361
+#define FX_CODEPAGE_MAC_Roman 10000
+#define FX_CODEPAGE_MAC_ShiftJIS 10001
+#define FX_CODEPAGE_MAC_ChineseTraditional 10002
+#define FX_CODEPAGE_MAC_Korean 10003
+#define FX_CODEPAGE_MAC_Arabic 10004
+#define FX_CODEPAGE_MAC_Hebrew 10005
+#define FX_CODEPAGE_MAC_Greek 10006
+#define FX_CODEPAGE_MAC_Cyrillic 10007
+#define FX_CODEPAGE_MAC_ChineseSimplified 10008
+#define FX_CODEPAGE_MAC_Thai 10021
+#define FX_CODEPAGE_MAC_EasternEuropean 10029
+#define FX_CODEPAGE_MAC_Turkish 10081
+#define FX_CODEPAGE_UTF32LE 12000
+#define FX_CODEPAGE_UTF32BE 12001
+#define FX_CODEPAGE_ISO8859_1 28591
+#define FX_CODEPAGE_ISO8859_2 28592
+#define FX_CODEPAGE_ISO8859_3 28593
+#define FX_CODEPAGE_ISO8859_4 28594
+#define FX_CODEPAGE_ISO8859_5 28595
+#define FX_CODEPAGE_ISO8859_6 28596
+#define FX_CODEPAGE_ISO8859_7 28597
+#define FX_CODEPAGE_ISO8859_8 28598
+#define FX_CODEPAGE_ISO8859_9 28599
+#define FX_CODEPAGE_ISO8859_10 28600
+#define FX_CODEPAGE_ISO8859_11 28601
+#define FX_CODEPAGE_ISO8859_12 28602
+#define FX_CODEPAGE_ISO8859_13 28603
+#define FX_CODEPAGE_ISO8859_14 28604
+#define FX_CODEPAGE_ISO8859_15 28605
+#define FX_CODEPAGE_ISO8859_16 28606
+#define FX_CODEPAGE_ISCII_Devanagari 57002
+#define FX_CODEPAGE_ISCII_Bengali 57003
+#define FX_CODEPAGE_ISCII_Tamil 57004
+#define FX_CODEPAGE_ISCII_Telugu 57005
+#define FX_CODEPAGE_ISCII_Assamese 57006
+#define FX_CODEPAGE_ISCII_Oriya 57007
+#define FX_CODEPAGE_ISCII_Kannada 57008
+#define FX_CODEPAGE_ISCII_Malayalam 57009
+#define FX_CODEPAGE_ISCII_Gujarati 57010
+#define FX_CODEPAGE_ISCII_Punjabi 57011
+#define FX_CODEPAGE_UTF7 65000
+#define FX_CODEPAGE_UTF8 65001
+#define FX_CHARSET_ANSI 0
+#define FX_CHARSET_Default 1
+#define FX_CHARSET_Symbol 2
+#define FX_CHARSET_MAC_Roman 77
+#define FX_CHARSET_MAC_ShiftJIS 78
+#define FX_CHARSET_MAC_Korean 79
+#define FX_CHARSET_MAC_ChineseSimplified 80
+#define FX_CHARSET_MAC_ChineseTriditional 81
+#define FX_CHARSET_MAC_Johab 82
+#define FX_CHARSET_MAC_Hebrew 83
+#define FX_CHARSET_MAC_Arabic 84
+#define FX_CHARSET_MAC_Greek 85
+#define FX_CHARSET_MAC_Turkish 86
+#define FX_CHARSET_MAC_Thai 87
+#define FX_CHARSET_MAC_EasternEuropean 88
+#define FX_CHARSET_MAC_Cyrillic 89
+#define FX_CHARSET_ShiftJIS 128
+#define FX_CHARSET_Korean 129
+#define FX_CHARSET_Johab 130
+#define FX_CHARSET_ChineseSimplified 134
+#define FX_CHARSET_ChineseTriditional 136
+#define FX_CHARSET_MSWin_Greek 161
+#define FX_CHARSET_MSWin_Turkish 162
+#define FX_CHARSET_MSWin_Vietnamese 163
+#define FX_CHARSET_MSWin_Hebrew 177
+#define FX_CHARSET_MSWin_Arabic 178
+#define FX_CHARSET_ArabicTraditional 179
+#define FX_CHARSET_ArabicUser 180
+#define FX_CHARSET_HebrewUser 181
+#define FX_CHARSET_MSWin_Baltic 186
+#define FX_CHARSET_MSWin_Cyrillic 204
+#define FX_CHARSET_Thai 222
+#define FX_CHARSET_MSWin_EasterEuropean 238
+#define FX_CHARSET_US 254
+#define FX_CHARSET_OEM 255
+FX_WORD FX_GetCodePageFromCharset(uint8_t charset);
+FX_WORD FX_GetCharsetFromCodePage(FX_WORD codepage);
+FX_WORD FX_GetCodePageFromStringA(const FX_CHAR* pStr, int32_t iLength);
+FX_WORD FX_GetCodePageFormStringW(const FX_WCHAR* pStr, int32_t iLength);
+FX_WORD FX_GetDefCodePageByLanguage(FX_WORD wLanguage);
+void FX_SwapByteOrder(FX_WCHAR* pStr, int32_t iLength);
+void FX_SwapByteOrderCopy(const FX_WCHAR* pSrc,
+ FX_WCHAR* pDst,
+ int32_t iLength);
+void FX_UTF16ToWChar(void* pBuffer, int32_t iLength);
+void FX_UTF16ToWCharCopy(const FX_WORD* pUTF16,
+ FX_WCHAR* pWChar,
+ int32_t iLength);
+void FX_WCharToUTF16(void* pBuffer, int32_t iLength);
+void FX_WCharToUTF16Copy(const FX_WCHAR* pWChar,
+ FX_WORD* pUTF16,
+ int32_t iLength);
+int32_t FX_DecodeString(FX_WORD wCodePage,
+ const FX_CHAR* pSrc,
+ int32_t* pSrcLen,
+ FX_WCHAR* pDst,
+ int32_t* pDstLen,
+ FX_BOOL bErrBreak = FALSE);
+int32_t FX_UTF8Decode(const FX_CHAR* pSrc,
+ int32_t* pSrcLen,
+ FX_WCHAR* pDst,
+ int32_t* pDstLen);
+enum FX_CODESYSTEM {
+ FX_MBCS = 0,
+ FX_SBCS,
+ FX_DBCS,
+};
+typedef struct _FX_CODEPAGE_HEADER {
+ uint16_t uCPID;
+ uint8_t uMinCharBytes;
+ uint8_t uMaxCharBytes;
+ FX_CODESYSTEM eCPType;
+ FX_BOOL bHasLeadByte;
+ FX_WCHAR wMinChar;
+ FX_WCHAR wMaxChar;
+ FX_WCHAR wDefChar;
+ FX_WCHAR wMinUnicode;
+ FX_WCHAR wMaxUnicode;
+ FX_WCHAR wDefUnicode;
+} FX_CODEPAGE_HEADER;
+#define FX_CPMAPTYPE_Consecution 1
+#define FX_CPMAPTYPE_Strict 2
+#define FX_CPMAPTYPE_NoMapping 3
+#define FX_CPMAPTYPE_Delta 4
+typedef struct _FX_CPCU_MAPTABLE1 {
+ uint16_t uMapType;
+ uint16_t uUniocde;
+} FX_CPCU_MAPTABLE1;
+typedef struct _FX_CPCU_MAPTABLE2 {
+ uint8_t uTrailByte;
+ uint8_t uMapType;
+ uint16_t uOffset;
+} FX_CPCU_MAPTABLE2;
+typedef struct _FX_CPCU_MAPINFO {
+ FX_CPCU_MAPTABLE1* pMapTable1;
+ FX_CPCU_MAPTABLE2* pMapTable2;
+ const uint8_t* pMapData;
+} FX_CPCU_MAPINFO;
+typedef struct _FX_CPUC_MAPTABLE {
+ uint16_t uStartUnicode;
+ uint16_t uEndUnicode;
+ uint16_t uMapType;
+ uint16_t uOffset;
+} FX_CPUC_MAPTABLE;
+typedef struct _FX_CPUC_MAPINFO {
+ uint32_t uMapCount;
+ FX_CPUC_MAPTABLE* pMapTable;
+ const uint8_t* pMapData;
+} FX_CPUC_MAPINFO;
+typedef struct _FX_CODEPAGE {
+ FX_CODEPAGE_HEADER const* pCPHeader;
+ FX_CPCU_MAPINFO const* pCPCUMapInfo;
+ FX_CPUC_MAPINFO const* pCPUCMapInfo;
+} FX_CODEPAGE, *FX_LPCODEPAGE;
+typedef FX_CODEPAGE const* FX_LPCCODEPAGE;
+typedef struct _FX_STR2CPHASH {
+ uint32_t uHash;
+ uint32_t uCodePage;
+} FX_STR2CPHASH;
+typedef struct _FX_CHARSET_MAP {
+ uint16_t charset;
+ uint16_t codepage;
+} FX_CHARSET_MAP;
+typedef struct _FX_LANG2CPMAP {
+ FX_WORD wLanguage;
+ FX_WORD wCodepage;
+} FX_LANG2CPMAP;
+
+class IFX_CodePage {
+ public:
+ static IFX_CodePage* Create(FX_WORD wCodePage);
+ virtual ~IFX_CodePage() {}
+ virtual void Release() = 0;
+ virtual FX_WORD GetCodePageNumber() const = 0;
+ virtual FX_CODESYSTEM GetCodeSystemType() const = 0;
+ virtual FX_BOOL HasLeadByte() const = 0;
+ virtual FX_BOOL IsLeadByte(uint8_t byte) const = 0;
+ virtual int32_t GetMinBytesPerChar() const = 0;
+ virtual int32_t GetMaxBytesPerChar() const = 0;
+ virtual FX_WCHAR GetMinCharcode() const = 0;
+ virtual FX_WCHAR GetMaxCharcode() const = 0;
+ virtual FX_WCHAR GetDefCharcode() const = 0;
+ virtual FX_WCHAR GetMinUnicode() const = 0;
+ virtual FX_WCHAR GetMaxUnicode() const = 0;
+ virtual FX_WCHAR GetDefUnicode() const = 0;
+ virtual FX_BOOL IsValidCharcode(FX_WORD wCharcode) const = 0;
+ virtual FX_WCHAR GetUnicode(FX_WORD wCharcode) const = 0;
+ virtual FX_BOOL IsValidUnicode(FX_WCHAR wUnicode) const = 0;
+ virtual FX_WORD GetCharcode(FX_WCHAR wUnicode) const = 0;
+};
+#endif