124 lines
3.2 KiB
C
124 lines
3.2 KiB
C
// Copyright 2014 The PDFium Authors
|
|
// 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 CORE_FXCRT_FX_CODEPAGE_H_
|
|
#define CORE_FXCRT_FX_CODEPAGE_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
// Prove consistency with incomplete forward definitions.
|
|
#include "core/fxcrt/fx_codepage_forward.h"
|
|
#include "core/fxcrt/fx_string.h"
|
|
#include "third_party/base/span.h"
|
|
|
|
enum class FX_CodePage : uint16_t {
|
|
kDefANSI = 0,
|
|
kSymbol = 42,
|
|
kMSDOS_US = 437,
|
|
kArabic_ASMO708 = 708,
|
|
kMSDOS_Greek1 = 737,
|
|
kMSDOS_Baltic = 775,
|
|
kMSDOS_WesternEuropean = 850,
|
|
kMSDOS_EasternEuropean = 852,
|
|
kMSDOS_Cyrillic = 855,
|
|
kMSDOS_Turkish = 857,
|
|
kMSDOS_Portuguese = 860,
|
|
kMSDOS_Icelandic = 861,
|
|
kMSDOS_Hebrew = 862,
|
|
kMSDOS_FrenchCanadian = 863,
|
|
kMSDOS_Arabic = 864,
|
|
kMSDOS_Norwegian = 865,
|
|
kMSDOS_Russian = 866,
|
|
kMSDOS_Greek2 = 869,
|
|
kMSDOS_Thai = 874,
|
|
kShiftJIS = 932,
|
|
kChineseSimplified = 936,
|
|
kHangul = 949,
|
|
kChineseTraditional = 950,
|
|
kUTF16LE = 1200,
|
|
kUTF16BE = 1201,
|
|
kMSWin_EasternEuropean = 1250,
|
|
kMSWin_Cyrillic = 1251,
|
|
kMSWin_WesternEuropean = 1252,
|
|
kMSWin_Greek = 1253,
|
|
kMSWin_Turkish = 1254,
|
|
kMSWin_Hebrew = 1255,
|
|
kMSWin_Arabic = 1256,
|
|
kMSWin_Baltic = 1257,
|
|
kMSWin_Vietnamese = 1258,
|
|
kJohab = 1361,
|
|
kMAC_Roman = 10000,
|
|
kMAC_ShiftJIS = 10001,
|
|
kMAC_ChineseTraditional = 10002,
|
|
kMAC_Korean = 10003,
|
|
kMAC_Arabic = 10004,
|
|
kMAC_Hebrew = 10005,
|
|
kMAC_Greek = 10006,
|
|
kMAC_Cyrillic = 10007,
|
|
kMAC_ChineseSimplified = 10008,
|
|
kMAC_Thai = 10021,
|
|
kMAC_EasternEuropean = 10029,
|
|
kMAC_Turkish = 10081,
|
|
kUTF8 = 65001,
|
|
kFailure = 65535,
|
|
};
|
|
|
|
enum class FX_Charset : uint8_t {
|
|
kANSI = 0,
|
|
kDefault = 1,
|
|
kSymbol = 2,
|
|
kMAC_Roman = 77,
|
|
kMAC_ShiftJIS = 78,
|
|
kMAC_Korean = 79,
|
|
kMAC_ChineseSimplified = 80,
|
|
kMAC_ChineseTraditional = 81,
|
|
kMAC_Hebrew = 83,
|
|
kMAC_Arabic = 84,
|
|
kMAC_Greek = 85,
|
|
kMAC_Turkish = 86,
|
|
kMAC_Thai = 87,
|
|
kMAC_EasternEuropean = 88,
|
|
kMAC_Cyrillic = 89,
|
|
kShiftJIS = 128,
|
|
kHangul = 129,
|
|
kJohab = 130,
|
|
kChineseSimplified = 134,
|
|
kChineseTraditional = 136,
|
|
kMSWin_Greek = 161,
|
|
kMSWin_Turkish = 162,
|
|
kMSWin_Vietnamese = 163,
|
|
kMSWin_Hebrew = 177,
|
|
kMSWin_Arabic = 178,
|
|
kMSWin_Baltic = 186,
|
|
kMSWin_Cyrillic = 204,
|
|
kThai = 222,
|
|
kMSWin_EasternEuropean = 238,
|
|
kUS = 254,
|
|
kOEM = 255,
|
|
};
|
|
|
|
// Hi-bytes to unicode codepoint mapping for various code pages.
|
|
struct FX_CharsetUnicodes {
|
|
FX_Charset m_Charset;
|
|
const uint16_t* m_pUnicodes; // Raw, POD struct.
|
|
};
|
|
|
|
extern const FX_CharsetUnicodes kFX_CharsetUnicodes[8];
|
|
|
|
FX_CodePage FX_GetACP();
|
|
FX_CodePage FX_GetCodePageFromCharset(FX_Charset charset);
|
|
FX_Charset FX_GetCharsetFromCodePage(FX_CodePage codepage);
|
|
FX_Charset FX_GetCharsetFromInt(int value);
|
|
bool FX_CharSetIsCJK(FX_Charset uCharset);
|
|
size_t FX_WideCharToMultiByte(FX_CodePage codepage,
|
|
WideStringView wstr,
|
|
pdfium::span<char> buf);
|
|
size_t FX_MultiByteToWideChar(FX_CodePage codepage,
|
|
ByteStringView bstr,
|
|
pdfium::span<wchar_t> buf);
|
|
|
|
#endif // CORE_FXCRT_FX_CODEPAGE_H_
|