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 "xfa/fgas/font/fgas_stdfontmgr.h" | 7 #include "xfa/fgas/font/fgas_stdfontmgr.h" |
8 | 8 |
9 #include "core/fxcrt/include/fx_stream.h" | 9 #include "core/fxcrt/include/fx_stream.h" |
10 #include "xfa/fgas/crt/fgas_codepage.h" | 10 #include "xfa/fgas/crt/fgas_codepage.h" |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 CFX_ByteString CFX_FontSourceEnum_File::GetNextFile() { | 484 CFX_ByteString CFX_FontSourceEnum_File::GetNextFile() { |
485 Restart: | 485 Restart: |
486 void* pCurHandle = | 486 void* pCurHandle = |
487 m_FolderQueue.GetSize() == 0 | 487 m_FolderQueue.GetSize() == 0 |
488 ? NULL | 488 ? NULL |
489 : m_FolderQueue.GetDataPtr(m_FolderQueue.GetSize() - 1)->pFileHandle; | 489 : m_FolderQueue.GetDataPtr(m_FolderQueue.GetSize() - 1)->pFileHandle; |
490 if (NULL == pCurHandle) { | 490 if (NULL == pCurHandle) { |
491 if (m_FolderPaths.GetSize() < 1) { | 491 if (m_FolderPaths.GetSize() < 1) { |
492 return ""; | 492 return ""; |
493 } | 493 } |
494 pCurHandle = FX_OpenFolder(m_FolderPaths[m_FolderPaths.GetSize() - 1]); | 494 pCurHandle = |
| 495 FX_OpenFolder(m_FolderPaths[m_FolderPaths.GetSize() - 1].c_str()); |
495 FX_HandleParentPath hpp; | 496 FX_HandleParentPath hpp; |
496 hpp.pFileHandle = pCurHandle; | 497 hpp.pFileHandle = pCurHandle; |
497 hpp.bsParentPath = m_FolderPaths[m_FolderPaths.GetSize() - 1]; | 498 hpp.bsParentPath = m_FolderPaths[m_FolderPaths.GetSize() - 1]; |
498 m_FolderQueue.Add(hpp); | 499 m_FolderQueue.Add(hpp); |
499 } | 500 } |
500 CFX_ByteString bsName; | 501 CFX_ByteString bsName; |
501 FX_BOOL bFolder; | 502 FX_BOOL bFolder; |
502 CFX_ByteString bsFolderSpearator = | 503 CFX_ByteString bsFolderSpearator = |
503 CFX_ByteString::FromUnicode(CFX_WideString(FX_GetFolderSeparator())); | 504 CFX_ByteString::FromUnicode(CFX_WideString(FX_GetFolderSeparator())); |
504 while (TRUE) { | 505 while (TRUE) { |
(...skipping 13 matching lines...) Expand all Loading... |
518 continue; | 519 continue; |
519 } | 520 } |
520 if (bsName == "." || bsName == "..") { | 521 if (bsName == "." || bsName == "..") { |
521 continue; | 522 continue; |
522 } | 523 } |
523 if (bFolder) { | 524 if (bFolder) { |
524 FX_HandleParentPath hpp; | 525 FX_HandleParentPath hpp; |
525 hpp.bsParentPath = | 526 hpp.bsParentPath = |
526 m_FolderQueue.GetDataPtr(m_FolderQueue.GetSize() - 1)->bsParentPath + | 527 m_FolderQueue.GetDataPtr(m_FolderQueue.GetSize() - 1)->bsParentPath + |
527 bsFolderSpearator + bsName; | 528 bsFolderSpearator + bsName; |
528 hpp.pFileHandle = FX_OpenFolder(hpp.bsParentPath); | 529 hpp.pFileHandle = FX_OpenFolder(hpp.bsParentPath.c_str()); |
529 if (hpp.pFileHandle == NULL) { | 530 if (hpp.pFileHandle == NULL) { |
530 continue; | 531 continue; |
531 } | 532 } |
532 m_FolderQueue.Add(hpp); | 533 m_FolderQueue.Add(hpp); |
533 pCurHandle = hpp.pFileHandle; | 534 pCurHandle = hpp.pFileHandle; |
534 continue; | 535 continue; |
535 } | 536 } |
536 bsName = | 537 bsName = |
537 m_FolderQueue.GetDataPtr(m_FolderQueue.GetSize() - 1)->bsParentPath + | 538 m_FolderQueue.GetDataPtr(m_FolderQueue.GetSize() - 1)->bsParentPath + |
538 bsFolderSpearator + bsName; | 539 bsFolderSpearator + bsName; |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 const FX_WCHAR* pszFontFamily) { | 695 const FX_WCHAR* pszFontFamily) { |
695 return nullptr; | 696 return nullptr; |
696 } | 697 } |
697 | 698 |
698 IFX_Font* CFX_FontMgrImp::GetFontByCodePage(uint16_t wCodePage, | 699 IFX_Font* CFX_FontMgrImp::GetFontByCodePage(uint16_t wCodePage, |
699 uint32_t dwFontStyles, | 700 uint32_t dwFontStyles, |
700 const FX_WCHAR* pszFontFamily) { | 701 const FX_WCHAR* pszFontFamily) { |
701 CFX_ByteString bsHash; | 702 CFX_ByteString bsHash; |
702 bsHash.Format("%d, %d", wCodePage, dwFontStyles); | 703 bsHash.Format("%d, %d", wCodePage, dwFontStyles); |
703 bsHash += CFX_WideString(pszFontFamily).UTF8Encode(); | 704 bsHash += CFX_WideString(pszFontFamily).UTF8Encode(); |
704 uint32_t dwHash = FX_HashCode_String_GetA(bsHash, bsHash.GetLength()); | 705 uint32_t dwHash = FX_HashCode_String_GetA(bsHash.c_str(), bsHash.GetLength()); |
705 | 706 |
706 CFX_ArrayTemplate<IFX_Font*>* pFonts = nullptr; | 707 CFX_ArrayTemplate<IFX_Font*>* pFonts = nullptr; |
707 if (m_Hash2Fonts.Lookup(dwHash, pFonts)) { | 708 if (m_Hash2Fonts.Lookup(dwHash, pFonts)) { |
708 if (!pFonts) | 709 if (!pFonts) |
709 return nullptr; | 710 return nullptr; |
710 | 711 |
711 if (pFonts->GetSize() != 0) | 712 if (pFonts->GetSize() != 0) |
712 return pFonts->GetAt(0)->Retain(); | 713 return pFonts->GetAt(0)->Retain(); |
713 } | 714 } |
714 | 715 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 return nullptr; | 752 return nullptr; |
752 const FGAS_FONTUSB* x = FGAS_GetUnicodeBitField(wUnicode); | 753 const FGAS_FONTUSB* x = FGAS_GetUnicodeBitField(wUnicode); |
753 uint16_t wCodePage = x ? x->wCodePage : 0xFFFF; | 754 uint16_t wCodePage = x ? x->wCodePage : 0xFFFF; |
754 uint16_t wBitField = x ? x->wBitField : 0x03E7; | 755 uint16_t wBitField = x ? x->wBitField : 0x03E7; |
755 CFX_ByteString bsHash; | 756 CFX_ByteString bsHash; |
756 if (wCodePage == 0xFFFF) | 757 if (wCodePage == 0xFFFF) |
757 bsHash.Format("%d, %d, %d", wCodePage, wBitField, dwFontStyles); | 758 bsHash.Format("%d, %d, %d", wCodePage, wBitField, dwFontStyles); |
758 else | 759 else |
759 bsHash.Format("%d, %d", wCodePage, dwFontStyles); | 760 bsHash.Format("%d, %d", wCodePage, dwFontStyles); |
760 bsHash += CFX_WideString(pszFontFamily).UTF8Encode(); | 761 bsHash += CFX_WideString(pszFontFamily).UTF8Encode(); |
761 uint32_t dwHash = FX_HashCode_String_GetA(bsHash, bsHash.GetLength()); | 762 uint32_t dwHash = FX_HashCode_String_GetA(bsHash.c_str(), bsHash.GetLength()); |
762 CFX_ArrayTemplate<IFX_Font*>* pFonts = nullptr; | 763 CFX_ArrayTemplate<IFX_Font*>* pFonts = nullptr; |
763 if (m_Hash2Fonts.Lookup(dwHash, pFonts)) { | 764 if (m_Hash2Fonts.Lookup(dwHash, pFonts)) { |
764 if (!pFonts) | 765 if (!pFonts) |
765 return nullptr; | 766 return nullptr; |
766 for (int32_t i = 0; i < pFonts->GetSize(); ++i) { | 767 for (int32_t i = 0; i < pFonts->GetSize(); ++i) { |
767 if (VerifyUnicode(pFonts->GetAt(i), wUnicode)) | 768 if (VerifyUnicode(pFonts->GetAt(i), wUnicode)) |
768 return pFonts->GetAt(i)->Retain(); | 769 return pFonts->GetAt(i)->Retain(); |
769 } | 770 } |
770 } | 771 } |
771 if (!pFonts) | 772 if (!pFonts) |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
852 return pFontAccess ? LoadFont(pFontAccess, iFaceIndex, pFaceCount, TRUE) | 853 return pFontAccess ? LoadFont(pFontAccess, iFaceIndex, pFaceCount, TRUE) |
853 : nullptr; | 854 : nullptr; |
854 } | 855 } |
855 | 856 |
856 IFX_Font* CFX_FontMgrImp::LoadFont(const FX_WCHAR* pszFileName, | 857 IFX_Font* CFX_FontMgrImp::LoadFont(const FX_WCHAR* pszFileName, |
857 int32_t iFaceIndex, | 858 int32_t iFaceIndex, |
858 int32_t* pFaceCount) { | 859 int32_t* pFaceCount) { |
859 CFX_ByteString bsHash; | 860 CFX_ByteString bsHash; |
860 bsHash += CFX_WideString(pszFileName).UTF8Encode(); | 861 bsHash += CFX_WideString(pszFileName).UTF8Encode(); |
861 | 862 |
862 uint32_t dwHash = | 863 uint32_t dwHash = FX_HashCode_String_GetA(bsHash.c_str(), bsHash.GetLength()); |
863 FX_HashCode_String_GetA((const FX_CHAR*)bsHash, bsHash.GetLength()); | |
864 IFX_FileAccess* pFontAccess = nullptr; | 864 IFX_FileAccess* pFontAccess = nullptr; |
865 if (!m_Hash2FileAccess.Lookup(dwHash, pFontAccess)) { | 865 if (!m_Hash2FileAccess.Lookup(dwHash, pFontAccess)) { |
866 pFontAccess = FX_CreateDefaultFileAccess(pszFileName); | 866 pFontAccess = FX_CreateDefaultFileAccess(pszFileName); |
867 m_Hash2FileAccess.SetAt(dwHash, pFontAccess); | 867 m_Hash2FileAccess.SetAt(dwHash, pFontAccess); |
868 } | 868 } |
869 | 869 |
870 return pFontAccess ? LoadFont(pFontAccess, iFaceIndex, pFaceCount, TRUE) | 870 return pFontAccess ? LoadFont(pFontAccess, iFaceIndex, pFaceCount, TRUE) |
871 : nullptr; | 871 : nullptr; |
872 } | 872 } |
873 | 873 |
(...skipping 13 matching lines...) Expand all Loading... |
887 | 887 |
888 IFX_Font* CFX_FontMgrImp::LoadFont(IFX_FileAccess* pFontAccess, | 888 IFX_Font* CFX_FontMgrImp::LoadFont(IFX_FileAccess* pFontAccess, |
889 int32_t iFaceIndex, | 889 int32_t iFaceIndex, |
890 int32_t* pFaceCount, | 890 int32_t* pFaceCount, |
891 FX_BOOL bWantCache) { | 891 FX_BOOL bWantCache) { |
892 uint32_t dwHash = 0; | 892 uint32_t dwHash = 0; |
893 IFX_Font* pFont = nullptr; | 893 IFX_Font* pFont = nullptr; |
894 if (bWantCache) { | 894 if (bWantCache) { |
895 CFX_ByteString bsHash; | 895 CFX_ByteString bsHash; |
896 bsHash.Format("%d, %d", (uintptr_t)pFontAccess, iFaceIndex); | 896 bsHash.Format("%d, %d", (uintptr_t)pFontAccess, iFaceIndex); |
897 dwHash = FX_HashCode_String_GetA(bsHash, bsHash.GetLength()); | 897 dwHash = FX_HashCode_String_GetA(bsHash.c_str(), bsHash.GetLength()); |
898 if (m_FileAccess2IFXFont.Lookup(dwHash, pFont)) { | 898 if (m_FileAccess2IFXFont.Lookup(dwHash, pFont)) { |
899 if (pFont) { | 899 if (pFont) { |
900 if (pFaceCount) | 900 if (pFaceCount) |
901 *pFaceCount = ((CFX_Font*)pFont->GetDevFont())->GetFace()->num_faces; | 901 *pFaceCount = ((CFX_Font*)pFont->GetDevFont())->GetFace()->num_faces; |
902 return pFont->Retain(); | 902 return pFont->Retain(); |
903 } | 903 } |
904 } | 904 } |
905 } | 905 } |
906 | 906 |
907 CFX_Font* pInternalFont = new CFX_Font; | 907 CFX_Font* pInternalFont = new CFX_Font; |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1025 | 1025 |
1026 FXFT_Set_Pixel_Sizes(pFace, 0, 64); | 1026 FXFT_Set_Pixel_Sizes(pFace, 0, 64); |
1027 return pFace; | 1027 return pFace; |
1028 } | 1028 } |
1029 | 1029 |
1030 IFX_FileRead* CFX_FontMgrImp::CreateFontStream( | 1030 IFX_FileRead* CFX_FontMgrImp::CreateFontStream( |
1031 CFX_FontMapper* pFontMapper, | 1031 CFX_FontMapper* pFontMapper, |
1032 IFX_SystemFontInfo* pSystemFontInfo, | 1032 IFX_SystemFontInfo* pSystemFontInfo, |
1033 uint32_t index) { | 1033 uint32_t index) { |
1034 int iExact = 0; | 1034 int iExact = 0; |
1035 void* hFont = pSystemFontInfo->MapFont( | 1035 void* hFont = |
1036 0, 0, FXFONT_DEFAULT_CHARSET, 0, pFontMapper->GetFaceName(index), iExact); | 1036 pSystemFontInfo->MapFont(0, 0, FXFONT_DEFAULT_CHARSET, 0, |
| 1037 pFontMapper->GetFaceName(index).c_str(), iExact); |
1037 if (!hFont) | 1038 if (!hFont) |
1038 return nullptr; | 1039 return nullptr; |
1039 | 1040 |
1040 uint32_t dwFileSize = pSystemFontInfo->GetFontData(hFont, 0, nullptr, 0); | 1041 uint32_t dwFileSize = pSystemFontInfo->GetFontData(hFont, 0, nullptr, 0); |
1041 if (dwFileSize == 0) | 1042 if (dwFileSize == 0) |
1042 return nullptr; | 1043 return nullptr; |
1043 | 1044 |
1044 uint8_t* pBuffer = FX_Alloc(uint8_t, dwFileSize + 1); | 1045 uint8_t* pBuffer = FX_Alloc(uint8_t, dwFileSize + 1); |
1045 dwFileSize = pSystemFontInfo->GetFontData(hFont, 0, pBuffer, dwFileSize); | 1046 dwFileSize = pSystemFontInfo->GetFontData(hFont, 0, pBuffer, dwFileSize); |
1046 | 1047 |
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1502 } | 1503 } |
1503 } | 1504 } |
1504 int32_t CFX_FontMgrImp::IsPartName(const CFX_WideString& Name1, | 1505 int32_t CFX_FontMgrImp::IsPartName(const CFX_WideString& Name1, |
1505 const CFX_WideString& Name2) { | 1506 const CFX_WideString& Name2) { |
1506 if (Name1.Find((const FX_WCHAR*)Name2) != -1) { | 1507 if (Name1.Find((const FX_WCHAR*)Name2) != -1) { |
1507 return 1; | 1508 return 1; |
1508 } | 1509 } |
1509 return 0; | 1510 return 0; |
1510 } | 1511 } |
1511 #endif | 1512 #endif |
OLD | NEW |