| 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 |