blob: 7bb2aa4a8d78b450137cbf56f94557f037936cbd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
// 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
#include "../fgas_base.h"
#include "fx_codepage.h"
#ifdef _FXCP
#ifdef __cplusplus
extern "C"
{
#endif
extern const FX_CODEPAGE_HEADER g_CP936_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP932_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP949_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP950_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP874_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP1250_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP1251_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP1252_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP1253_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP1254_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP1255_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP1256_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP1257_MapHeader;
extern const FX_CODEPAGE_HEADER g_CP1258_MapHeader;
extern const FX_CPCU_MAPINFO g_CP936_CUMap;
extern const FX_CPCU_MAPINFO g_CP932_CUMap;
extern const FX_CPCU_MAPINFO g_CP949_CUMap;
extern const FX_CPCU_MAPINFO g_CP950_CUMap;
extern const FX_CPCU_MAPINFO g_CP874_CUMap;
extern const FX_CPCU_MAPINFO g_CP1250_CUMap;
extern const FX_CPCU_MAPINFO g_CP1251_CUMap;
extern const FX_CPCU_MAPINFO g_CP1252_CUMap;
extern const FX_CPCU_MAPINFO g_CP1253_CUMap;
extern const FX_CPCU_MAPINFO g_CP1254_CUMap;
extern const FX_CPCU_MAPINFO g_CP1255_CUMap;
extern const FX_CPCU_MAPINFO g_CP1256_CUMap;
extern const FX_CPCU_MAPINFO g_CP1257_CUMap;
extern const FX_CPCU_MAPINFO g_CP1258_CUMap;
FX_LPCCODEPAGE FX_GetCodePage(FX_WORD wCodePage)
{
FX_INT32 iEnd = sizeof(g_FXCodePageMgr) / sizeof(FX_CODEPAGE) - 1;
FXSYS_assert(iEnd >= 0);
FX_INT32 iStart = 0, iMid;
FX_UINT16 uCPID;
do {
iMid = (iStart + iEnd) / 2;
const FX_CODEPAGE &cp = g_FXCodePageMgr[iMid];
uCPID = cp.pCPHeader->uCPID;
if (wCodePage == uCPID) {
return g_FXCodePageMgr + iMid;
} else if (wCodePage < uCPID) {
iEnd = iMid - 1;
} else {
iStart = iMid + 1;
}
} while (iStart <= iEnd);
return NULL;
}
#ifdef __cplusplus
}
#endif
#endif
|