| 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 "core/fpdfapi/fpdf_page/pageint.h" | 7 #include "core/fpdfapi/fpdf_page/pageint.h" |
| 8 | 8 |
| 9 #include "core/fdrm/crypto/include/fx_crypt.h" | 9 #include "core/fdrm/crypto/include/fx_crypt.h" |
| 10 #include "core/fpdfapi/fpdf_font/cpdf_type1font.h" | 10 #include "core/fpdfapi/fpdf_font/cpdf_type1font.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 } | 152 } |
| 153 if (!fontData) { | 153 if (!fontData) { |
| 154 fontData = new CPDF_CountedFont(pFont); | 154 fontData = new CPDF_CountedFont(pFont); |
| 155 m_FontMap[pFontDict] = fontData; | 155 m_FontMap[pFontDict] = fontData; |
| 156 } else { | 156 } else { |
| 157 fontData->reset(pFont); | 157 fontData->reset(pFont); |
| 158 } | 158 } |
| 159 return fontData->AddRef(); | 159 return fontData->AddRef(); |
| 160 } | 160 } |
| 161 | 161 |
| 162 CPDF_Font* CPDF_DocPageData::GetStandardFont(const CFX_ByteStringC& fontName, | 162 CPDF_Font* CPDF_DocPageData::GetStandardFont(const CFX_ByteString& fontName, |
| 163 CPDF_FontEncoding* pEncoding) { | 163 CPDF_FontEncoding* pEncoding) { |
| 164 if (fontName.IsEmpty()) | 164 if (fontName.IsEmpty()) |
| 165 return nullptr; | 165 return nullptr; |
| 166 | 166 |
| 167 for (auto& it : m_FontMap) { | 167 for (auto& it : m_FontMap) { |
| 168 CPDF_CountedFont* fontData = it.second; | 168 CPDF_CountedFont* fontData = it.second; |
| 169 CPDF_Font* pFont = fontData->get(); | 169 CPDF_Font* pFont = fontData->get(); |
| 170 if (!pFont) | 170 if (!pFont) |
| 171 continue; | 171 continue; |
| 172 if (pFont->GetBaseFont() != fontName) | 172 if (pFont->GetBaseFont() != fontName) |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 | 418 |
| 419 auto it = m_IccProfileMap.find(pIccProfileStream); | 419 auto it = m_IccProfileMap.find(pIccProfileStream); |
| 420 if (it != m_IccProfileMap.end()) { | 420 if (it != m_IccProfileMap.end()) { |
| 421 return it->second->AddRef(); | 421 return it->second->AddRef(); |
| 422 } | 422 } |
| 423 | 423 |
| 424 CPDF_StreamAcc stream; | 424 CPDF_StreamAcc stream; |
| 425 stream.LoadAllData(pIccProfileStream, FALSE); | 425 stream.LoadAllData(pIccProfileStream, FALSE); |
| 426 uint8_t digest[20]; | 426 uint8_t digest[20]; |
| 427 CRYPT_SHA1Generate(stream.GetData(), stream.GetSize(), digest); | 427 CRYPT_SHA1Generate(stream.GetData(), stream.GetSize(), digest); |
| 428 auto hash_it = m_HashProfileMap.find(CFX_ByteStringC(digest, 20)); | 428 CFX_ByteString bsDigest(digest, 20); |
| 429 auto hash_it = m_HashProfileMap.find(bsDigest); |
| 429 if (hash_it != m_HashProfileMap.end()) { | 430 if (hash_it != m_HashProfileMap.end()) { |
| 430 auto it_copied_stream = m_IccProfileMap.find(hash_it->second); | 431 auto it_copied_stream = m_IccProfileMap.find(hash_it->second); |
| 431 return it_copied_stream->second->AddRef(); | 432 return it_copied_stream->second->AddRef(); |
| 432 } | 433 } |
| 433 CPDF_IccProfile* pProfile = | 434 CPDF_IccProfile* pProfile = |
| 434 new CPDF_IccProfile(stream.GetData(), stream.GetSize()); | 435 new CPDF_IccProfile(stream.GetData(), stream.GetSize()); |
| 435 CPDF_CountedIccProfile* ipData = new CPDF_CountedIccProfile(pProfile); | 436 CPDF_CountedIccProfile* ipData = new CPDF_CountedIccProfile(pProfile); |
| 436 m_IccProfileMap[pIccProfileStream] = ipData; | 437 m_IccProfileMap[pIccProfileStream] = ipData; |
| 437 m_HashProfileMap[CFX_ByteStringC(digest, 20)] = pIccProfileStream; | 438 m_HashProfileMap[bsDigest] = pIccProfileStream; |
| 438 return ipData->AddRef(); | 439 return ipData->AddRef(); |
| 439 } | 440 } |
| 440 | 441 |
| 441 void CPDF_DocPageData::ReleaseIccProfile(CPDF_IccProfile* pIccProfile) { | 442 void CPDF_DocPageData::ReleaseIccProfile(CPDF_IccProfile* pIccProfile) { |
| 442 ASSERT(pIccProfile); | 443 ASSERT(pIccProfile); |
| 443 | 444 |
| 444 for (auto it = m_IccProfileMap.begin(); it != m_IccProfileMap.end(); ++it) { | 445 for (auto it = m_IccProfileMap.begin(); it != m_IccProfileMap.end(); ++it) { |
| 445 CPDF_CountedIccProfile* profile = it->second; | 446 CPDF_CountedIccProfile* profile = it->second; |
| 446 if (profile->get() != pIccProfile) | 447 if (profile->get() != pIccProfile) |
| 447 continue; | 448 continue; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 } | 511 } |
| 511 | 512 |
| 512 CPDF_CountedPattern* CPDF_DocPageData::FindPatternPtr( | 513 CPDF_CountedPattern* CPDF_DocPageData::FindPatternPtr( |
| 513 CPDF_Object* pPatternObj) const { | 514 CPDF_Object* pPatternObj) const { |
| 514 if (!pPatternObj) | 515 if (!pPatternObj) |
| 515 return nullptr; | 516 return nullptr; |
| 516 | 517 |
| 517 auto it = m_PatternMap.find(pPatternObj); | 518 auto it = m_PatternMap.find(pPatternObj); |
| 518 return it != m_PatternMap.end() ? it->second : nullptr; | 519 return it != m_PatternMap.end() ? it->second : nullptr; |
| 519 } | 520 } |
| OLD | NEW |