Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 PDFium Authors. All rights reserved. | 1 // Copyright 2015 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 "xfa/fgas/font/cfgas_fontmgr.h" | 7 #include "xfa/fgas/font/cfgas_fontmgr.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 559 return bsName; | 559 return bsName; |
| 560 } | 560 } |
| 561 | 561 |
| 562 FX_POSITION CFX_FontSourceEnum_File::GetStartPosition() { | 562 FX_POSITION CFX_FontSourceEnum_File::GetStartPosition() { |
| 563 m_wsNext = GetNextFile().UTF8Decode(); | 563 m_wsNext = GetNextFile().UTF8Decode(); |
| 564 if (m_wsNext.GetLength() == 0) | 564 if (m_wsNext.GetLength() == 0) |
| 565 return (FX_POSITION)0; | 565 return (FX_POSITION)0; |
| 566 return (FX_POSITION)-1; | 566 return (FX_POSITION)-1; |
| 567 } | 567 } |
| 568 | 568 |
| 569 IFX_FileAccess* CFX_FontSourceEnum_File::GetNext(FX_POSITION& pos) { | 569 CFX_RetainPtr<IFX_FileAccess> CFX_FontSourceEnum_File::GetNext( |
| 570 IFX_FileAccess* pAccess = IFX_FileAccess::CreateDefault(m_wsNext.AsStringC()); | 570 FX_POSITION& pos) { |
|
dsinclair
2016/12/07 23:05:03
Can this be a * instead of an &?
Tom Sepez
2016/12/07 23:26:55
It could, but this goes far beyond this -- the FX
| |
| 571 CFX_RetainPtr<IFX_FileAccess> pAccess = | |
| 572 IFX_FileAccess::CreateDefault(m_wsNext.AsStringC()); | |
| 571 m_wsNext = GetNextFile().UTF8Decode(); | 573 m_wsNext = GetNextFile().UTF8Decode(); |
| 572 pos = m_wsNext.GetLength() != 0 ? pAccess : nullptr; | 574 pos = m_wsNext.GetLength() != 0 ? pAccess.Get() : nullptr; |
| 573 return pAccess; | 575 return pAccess; |
| 574 } | 576 } |
| 575 | 577 |
| 576 std::unique_ptr<CFGAS_FontMgr> CFGAS_FontMgr::Create( | 578 std::unique_ptr<CFGAS_FontMgr> CFGAS_FontMgr::Create( |
| 577 CFX_FontSourceEnum_File* pFontEnum) { | 579 CFX_FontSourceEnum_File* pFontEnum) { |
| 578 if (!pFontEnum) | 580 if (!pFontEnum) |
| 579 return nullptr; | 581 return nullptr; |
| 580 | 582 |
| 581 auto pFontMgr = pdfium::MakeUnique<CFGAS_FontMgr>(pFontEnum); | 583 auto pFontMgr = pdfium::MakeUnique<CFGAS_FontMgr>(pFontEnum); |
| 582 if (!pFontMgr->EnumFonts()) | 584 if (!pFontMgr->EnumFonts()) |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 629 CFX_WideString wsFaceName = | 631 CFX_WideString wsFaceName = |
| 630 CFX_WideString::FromLocal(pFontMapper->GetFaceName(i).c_str()); | 632 CFX_WideString::FromLocal(pFontMapper->GetFaceName(i).c_str()); |
| 631 RegisterFaces(pFontStream, &wsFaceName); | 633 RegisterFaces(pFontStream, &wsFaceName); |
| 632 } | 634 } |
| 633 return m_InstalledFonts.GetSize() != 0; | 635 return m_InstalledFonts.GetSize() != 0; |
| 634 } | 636 } |
| 635 | 637 |
| 636 bool CFGAS_FontMgr::EnumFontsFromFiles() { | 638 bool CFGAS_FontMgr::EnumFontsFromFiles() { |
| 637 CFX_GEModule::Get()->GetFontMgr()->InitFTLibrary(); | 639 CFX_GEModule::Get()->GetFontMgr()->InitFTLibrary(); |
| 638 FX_POSITION pos = m_pFontSource->GetStartPosition(); | 640 FX_POSITION pos = m_pFontSource->GetStartPosition(); |
| 639 IFX_FileAccess* pFontSource = nullptr; | |
| 640 CFX_RetainPtr<IFX_SeekableReadStream> pFontStream; | |
| 641 while (pos) { | 641 while (pos) { |
| 642 pFontSource = m_pFontSource->GetNext(pos); | 642 CFX_RetainPtr<IFX_FileAccess> pFontSource = m_pFontSource->GetNext(pos); |
| 643 pFontStream = pFontSource->CreateFileStream(FX_FILEMODE_ReadOnly); | 643 CFX_RetainPtr<IFX_SeekableReadStream> pFontStream = |
| 644 if (!pFontStream) { | 644 pFontSource->CreateFileStream(FX_FILEMODE_ReadOnly); |
| 645 pFontSource->Release(); | 645 if (pFontStream) |
| 646 continue; | 646 RegisterFaces(pFontStream, nullptr); |
| 647 } | |
| 648 RegisterFaces(pFontStream, nullptr); | |
| 649 pFontSource->Release(); | |
| 650 } | 647 } |
| 651 return m_InstalledFonts.GetSize() != 0; | 648 return m_InstalledFonts.GetSize() != 0; |
| 652 } | 649 } |
| 653 | 650 |
| 654 bool CFGAS_FontMgr::EnumFonts() { | 651 bool CFGAS_FontMgr::EnumFonts() { |
| 655 if (EnumFontsFromFontMapper()) | 652 if (EnumFontsFromFontMapper()) |
| 656 return true; | 653 return true; |
| 657 return EnumFontsFromFiles(); | 654 return EnumFontsFromFiles(); |
| 658 } | 655 } |
| 659 | 656 |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1188 } | 1185 } |
| 1189 | 1186 |
| 1190 int32_t CFGAS_FontMgr::IsPartName(const CFX_WideString& Name1, | 1187 int32_t CFGAS_FontMgr::IsPartName(const CFX_WideString& Name1, |
| 1191 const CFX_WideString& Name2) { | 1188 const CFX_WideString& Name2) { |
| 1192 if (Name1.Find(Name2.c_str()) != -1) | 1189 if (Name1.Find(Name2.c_str()) != -1) |
| 1193 return 1; | 1190 return 1; |
| 1194 return 0; | 1191 return 0; |
| 1195 } | 1192 } |
| 1196 | 1193 |
| 1197 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ | 1194 #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
| OLD | NEW |