OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "../../../include/fpdfapi/fpdf_module.h" | 7 #include "../../../include/fpdfapi/fpdf_module.h" |
8 #include "../../../include/fpdfapi/fpdf_page.h" | 8 #include "../../../include/fpdfapi/fpdf_page.h" |
9 #include "../../../include/fpdfapi/fpdf_resource.h" | 9 #include "../../../include/fpdfapi/fpdf_resource.h" |
10 #include "../../../include/fxge/fx_freetype.h" | 10 #include "../../../include/fxge/fx_freetype.h" |
11 #include "../../../include/fxge/fx_ge.h" | 11 #include "../../../include/fxge/fx_ge.h" |
12 #include "../fpdf_cmaps/cmap_int.h" | 12 #include "../fpdf_cmaps/cmap_int.h" |
13 #include "font_int.h" | 13 #include "font_int.h" |
14 | 14 |
15 CPDF_CMapManager::CPDF_CMapManager() { | 15 CPDF_CMapManager::CPDF_CMapManager() { |
16 m_bPrompted = FALSE; | 16 m_bPrompted = FALSE; |
17 FXSYS_memset(m_CID2UnicodeMaps, 0, sizeof m_CID2UnicodeMaps); | 17 FXSYS_memset(m_CID2UnicodeMaps, 0, sizeof m_CID2UnicodeMaps); |
18 } | 18 } |
19 CPDF_CMapManager::~CPDF_CMapManager() { | 19 CPDF_CMapManager::~CPDF_CMapManager() { |
20 for (const auto& pair : m_CMaps) { | 20 for (const auto& pair : m_CMaps) { |
21 delete pair.second; | 21 delete pair.second; |
22 } | 22 } |
23 m_CMaps.clear(); | 23 m_CMaps.clear(); |
24 for (int i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { | 24 for (size_t i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { |
25 delete m_CID2UnicodeMaps[i]; | 25 delete m_CID2UnicodeMaps[i]; |
26 } | 26 } |
27 } | 27 } |
28 CPDF_CMap* CPDF_CMapManager::GetPredefinedCMap(const CFX_ByteString& name, | 28 CPDF_CMap* CPDF_CMapManager::GetPredefinedCMap(const CFX_ByteString& name, |
29 FX_BOOL bPromptCJK) { | 29 FX_BOOL bPromptCJK) { |
30 auto it = m_CMaps.find(name); | 30 auto it = m_CMaps.find(name); |
31 if (it != m_CMaps.end()) { | 31 if (it != m_CMaps.end()) { |
32 return it->second; | 32 return it->second; |
33 } | 33 } |
34 CPDF_CMap* pCMap = LoadPredefinedCMap(name, bPromptCJK); | 34 CPDF_CMap* pCMap = LoadPredefinedCMap(name, bPromptCJK); |
(...skipping 21 matching lines...) Expand all Loading... |
56 if (Ordering == CFX_ByteStringC(g_CharsetNames[charset])) | 56 if (Ordering == CFX_ByteStringC(g_CharsetNames[charset])) |
57 return charset; | 57 return charset; |
58 } | 58 } |
59 return CIDSET_UNKNOWN; | 59 return CIDSET_UNKNOWN; |
60 } | 60 } |
61 void CPDF_CMapManager::ReloadAll() { | 61 void CPDF_CMapManager::ReloadAll() { |
62 for (const auto& pair : m_CMaps) { | 62 for (const auto& pair : m_CMaps) { |
63 CPDF_CMap* pCMap = pair.second; | 63 CPDF_CMap* pCMap = pair.second; |
64 pCMap->LoadPredefined(this, pair.first, FALSE); | 64 pCMap->LoadPredefined(this, pair.first, FALSE); |
65 } | 65 } |
66 for (int i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { | 66 for (size_t i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { |
67 if (CPDF_CID2UnicodeMap* pMap = m_CID2UnicodeMaps[i]) { | 67 if (CPDF_CID2UnicodeMap* pMap = m_CID2UnicodeMaps[i]) { |
68 pMap->Load(this, i, FALSE); | 68 pMap->Load(this, i, FALSE); |
69 } | 69 } |
70 } | 70 } |
71 } | 71 } |
72 CPDF_CID2UnicodeMap* CPDF_CMapManager::GetCID2UnicodeMap(int charset, | 72 CPDF_CID2UnicodeMap* CPDF_CMapManager::GetCID2UnicodeMap(size_t charset, |
73 FX_BOOL bPromptCJK) { | 73 FX_BOOL bPromptCJK) { |
74 if (m_CID2UnicodeMaps[charset] == NULL) { | 74 if (!m_CID2UnicodeMaps[charset]) |
75 m_CID2UnicodeMaps[charset] = LoadCID2UnicodeMap(charset, bPromptCJK); | 75 m_CID2UnicodeMaps[charset] = LoadCID2UnicodeMap(charset, bPromptCJK); |
76 } | |
77 return m_CID2UnicodeMaps[charset]; | 76 return m_CID2UnicodeMaps[charset]; |
78 } | 77 } |
79 CPDF_CID2UnicodeMap* CPDF_CMapManager::LoadCID2UnicodeMap(int charset, | 78 CPDF_CID2UnicodeMap* CPDF_CMapManager::LoadCID2UnicodeMap(size_t charset, |
80 FX_BOOL bPromptCJK) { | 79 FX_BOOL bPromptCJK) { |
81 CPDF_CID2UnicodeMap* pMap = new CPDF_CID2UnicodeMap(); | 80 CPDF_CID2UnicodeMap* pMap = new CPDF_CID2UnicodeMap(); |
82 if (!pMap->Initialize()) { | 81 if (!pMap->Initialize()) { |
83 delete pMap; | 82 delete pMap; |
84 return NULL; | 83 return NULL; |
85 } | 84 } |
86 pMap->Load(this, charset, bPromptCJK); | 85 pMap->Load(this, charset, bPromptCJK); |
87 return pMap; | 86 return pMap; |
88 } | 87 } |
89 CPDF_CMapParser::CPDF_CMapParser() { | 88 CPDF_CMapParser::CPDF_CMapParser() { |
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 } | 761 } |
763 FX_WCHAR CPDF_CID2UnicodeMap::UnicodeFromCID(FX_WORD CID) { | 762 FX_WCHAR CPDF_CID2UnicodeMap::UnicodeFromCID(FX_WORD CID) { |
764 if (m_Charset == CIDSET_UNICODE) { | 763 if (m_Charset == CIDSET_UNICODE) { |
765 return CID; | 764 return CID; |
766 } | 765 } |
767 if (CID < m_EmbeddedCount) { | 766 if (CID < m_EmbeddedCount) { |
768 return m_pEmbeddedMap[CID]; | 767 return m_pEmbeddedMap[CID]; |
769 } | 768 } |
770 return 0; | 769 return 0; |
771 } | 770 } |
772 void FPDFAPI_LoadCID2UnicodeMap(int charset, | 771 void FPDFAPI_LoadCID2UnicodeMap(size_t charset, |
773 const FX_WORD*& pMap, | 772 const FX_WORD*& pMap, |
774 FX_DWORD& count); | 773 FX_DWORD& count); |
775 void CPDF_CID2UnicodeMap::Load(CPDF_CMapManager* pMgr, | 774 void CPDF_CID2UnicodeMap::Load(CPDF_CMapManager* pMgr, |
776 int charset, | 775 size_t charset, |
777 FX_BOOL bPromptCJK) { | 776 FX_BOOL bPromptCJK) { |
778 m_Charset = charset; | 777 m_Charset = charset; |
779 FPDFAPI_LoadCID2UnicodeMap(charset, m_pEmbeddedMap, m_EmbeddedCount); | 778 FPDFAPI_LoadCID2UnicodeMap(charset, m_pEmbeddedMap, m_EmbeddedCount); |
780 } | 779 } |
781 #include "ttgsubtable.h" | 780 #include "ttgsubtable.h" |
782 CPDF_CIDFont::CPDF_CIDFont() : CPDF_Font(PDFFONT_CIDFONT) { | 781 CPDF_CIDFont::CPDF_CIDFont() : CPDF_Font(PDFFONT_CIDFONT) { |
783 m_pCMap = NULL; | 782 m_pCMap = NULL; |
784 m_pAllocatedCMap = NULL; | 783 m_pAllocatedCMap = NULL; |
785 m_pCID2UnicodeMap = NULL; | 784 m_pCID2UnicodeMap = NULL; |
786 m_pAnsiWidths = NULL; | 785 m_pAnsiWidths = NULL; |
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1625 if (middlecode > CID) { | 1624 if (middlecode > CID) { |
1626 end = middle - 1; | 1625 end = middle - 1; |
1627 } else if (middlecode < CID) { | 1626 } else if (middlecode < CID) { |
1628 begin = middle + 1; | 1627 begin = middle + 1; |
1629 } else { | 1628 } else { |
1630 return &Japan1_VertCIDs[middle].a; | 1629 return &Japan1_VertCIDs[middle].a; |
1631 } | 1630 } |
1632 } | 1631 } |
1633 return NULL; | 1632 return NULL; |
1634 } | 1633 } |
OLD | NEW |