| 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 <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "xfa/src/foxitlib.h" | 9 #include "xfa/src/foxitlib.h" |
| 10 static void FWL_SetChildThemeID(IFWL_Widget* pParent, FX_DWORD dwThemeID) { | 10 static void FWL_SetChildThemeID(IFWL_Widget* pParent, FX_DWORD dwThemeID) { |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 return FWL_ERR_Succeeded; | 159 return FWL_ERR_Succeeded; |
| 160 } | 160 } |
| 161 CFWL_WidgetTP::~CFWL_WidgetTP() {} | 161 CFWL_WidgetTP::~CFWL_WidgetTP() {} |
| 162 FWL_ERR CFWL_WidgetTP::SetFont(IFWL_Widget* pWidget, | 162 FWL_ERR CFWL_WidgetTP::SetFont(IFWL_Widget* pWidget, |
| 163 const FX_WCHAR* strFont, | 163 const FX_WCHAR* strFont, |
| 164 FX_FLOAT fFontSize, | 164 FX_FLOAT fFontSize, |
| 165 FX_ARGB rgbFont) { | 165 FX_ARGB rgbFont) { |
| 166 if (!m_pTextOut) { | 166 if (!m_pTextOut) { |
| 167 return FWL_ERR_Succeeded; | 167 return FWL_ERR_Succeeded; |
| 168 } | 168 } |
| 169 m_pFDEFont = FWL_GetFontManager()->FindFont(strFont, 0, 0); | 169 m_pFDEFont = CFWL_FontManager::GetInstance()->FindFont(strFont, 0, 0); |
| 170 m_pTextOut->SetFont(m_pFDEFont); | 170 m_pTextOut->SetFont(m_pFDEFont); |
| 171 m_pTextOut->SetFontSize(fFontSize); | 171 m_pTextOut->SetFontSize(fFontSize); |
| 172 m_pTextOut->SetTextColor(rgbFont); | 172 m_pTextOut->SetTextColor(rgbFont); |
| 173 return FWL_ERR_Succeeded; | 173 return FWL_ERR_Succeeded; |
| 174 } | 174 } |
| 175 FWL_ERR CFWL_WidgetTP::SetFont(IFWL_Widget* pWidget, | 175 FWL_ERR CFWL_WidgetTP::SetFont(IFWL_Widget* pWidget, |
| 176 IFX_Font* pFont, | 176 IFX_Font* pFont, |
| 177 FX_FLOAT fFontSize, | 177 FX_FLOAT fFontSize, |
| 178 FX_ARGB rgbFont) { | 178 FX_ARGB rgbFont) { |
| 179 if (!m_pTextOut) { | 179 if (!m_pTextOut) { |
| 180 return FWL_ERR_Succeeded; | 180 return FWL_ERR_Succeeded; |
| 181 } | 181 } |
| 182 m_pTextOut->SetFont(pFont); | 182 m_pTextOut->SetFont(pFont); |
| 183 m_pTextOut->SetFontSize(fFontSize); | 183 m_pTextOut->SetFontSize(fFontSize); |
| 184 m_pTextOut->SetTextColor(rgbFont); | 184 m_pTextOut->SetTextColor(rgbFont); |
| 185 return FWL_ERR_Succeeded; | 185 return FWL_ERR_Succeeded; |
| 186 } | 186 } |
| 187 IFX_Font* CFWL_WidgetTP::GetFont(IFWL_Widget* pWidget) { | 187 IFX_Font* CFWL_WidgetTP::GetFont(IFWL_Widget* pWidget) { |
| 188 return m_pFDEFont; | 188 return m_pFDEFont; |
| 189 } | 189 } |
| 190 CFWL_WidgetTP::CFWL_WidgetTP() | 190 CFWL_WidgetTP::CFWL_WidgetTP() |
| 191 : m_dwRefCount(1), m_pTextOut(NULL), m_pFDEFont(NULL), m_dwThemeID(0) {} | 191 : m_dwRefCount(1), m_pTextOut(NULL), m_pFDEFont(NULL), m_dwThemeID(0) {} |
| 192 FX_ERR CFWL_WidgetTP::InitTTO() { | 192 FX_ERR CFWL_WidgetTP::InitTTO() { |
| 193 if (m_pTextOut) { | 193 if (m_pTextOut) { |
| 194 return FWL_ERR_Succeeded; | 194 return FWL_ERR_Succeeded; |
| 195 } | 195 } |
| 196 m_pFDEFont = FWL_GetFontManager()->FindFont(FX_WSTRC(L"Helvetica"), 0, 0); | 196 m_pFDEFont = |
| 197 CFWL_FontManager::GetInstance()->FindFont(FX_WSTRC(L"Helvetica"), 0, 0); |
| 197 m_pTextOut = IFDE_TextOut::Create(); | 198 m_pTextOut = IFDE_TextOut::Create(); |
| 198 m_pTextOut->SetFont(m_pFDEFont); | 199 m_pTextOut->SetFont(m_pFDEFont); |
| 199 m_pTextOut->SetFontSize(FWLTHEME_CAPACITY_FontSize); | 200 m_pTextOut->SetFontSize(FWLTHEME_CAPACITY_FontSize); |
| 200 m_pTextOut->SetTextColor(FWLTHEME_CAPACITY_TextColor); | 201 m_pTextOut->SetTextColor(FWLTHEME_CAPACITY_TextColor); |
| 201 m_pTextOut->SetEllipsisString(L"..."); | 202 m_pTextOut->SetEllipsisString(L"..."); |
| 202 return FWL_ERR_Succeeded; | 203 return FWL_ERR_Succeeded; |
| 203 } | 204 } |
| 204 FX_ERR CFWL_WidgetTP::FinalizeTTO() { | 205 FX_ERR CFWL_WidgetTP::FinalizeTTO() { |
| 205 if (m_pTextOut) { | 206 if (m_pTextOut) { |
| 206 m_pTextOut->Release(); | 207 m_pTextOut->Release(); |
| (...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 ((FX_WORD)srcColor.r * n + (FX_WORD)renderColor.r * scale) >> 8); | 677 ((FX_WORD)srcColor.r * n + (FX_WORD)renderColor.r * scale) >> 8); |
| 677 dstColor.g = (uint8_t)( | 678 dstColor.g = (uint8_t)( |
| 678 ((FX_WORD)srcColor.g * n + (FX_WORD)renderColor.g * scale) >> 8); | 679 ((FX_WORD)srcColor.g * n + (FX_WORD)renderColor.g * scale) >> 8); |
| 679 dstColor.b = (uint8_t)( | 680 dstColor.b = (uint8_t)( |
| 680 ((FX_WORD)srcColor.b * n + (FX_WORD)renderColor.b * scale) >> 8); | 681 ((FX_WORD)srcColor.b * n + (FX_WORD)renderColor.b * scale) >> 8); |
| 681 return dstColor; | 682 return dstColor; |
| 682 } | 683 } |
| 683 CFWL_ArrowData::CFWL_ArrowData() : m_pColorData(NULL) { | 684 CFWL_ArrowData::CFWL_ArrowData() : m_pColorData(NULL) { |
| 684 SetColorData(0); | 685 SetColorData(0); |
| 685 } | 686 } |
| 686 CFWL_FontManager* FWL_GetFontManager() { | |
| 687 static CFWL_FontManager* _fontManager = NULL; | |
| 688 if (_fontManager == NULL) { | |
| 689 _fontManager = new CFWL_FontManager; | |
| 690 } | |
| 691 return _fontManager; | |
| 692 } | |
| 693 void FWL_ReleaseFontManager() { | |
| 694 CFWL_FontManager* fontManager = FWL_GetFontManager(); | |
| 695 delete fontManager; | |
| 696 } | |
| 697 CFWL_FontData::CFWL_FontData() | 687 CFWL_FontData::CFWL_FontData() |
| 698 : m_dwStyles(0), | 688 : m_dwStyles(0), |
| 699 m_dwCodePage(0), | 689 m_dwCodePage(0), |
| 700 m_pFont(0), | 690 m_pFont(0), |
| 701 m_pFontMgr(NULL) | 691 m_pFontMgr(NULL) |
| 702 #if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ | 692 #if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ |
| 703 , | 693 , |
| 704 m_pFontSource(NULL) | 694 m_pFontSource(NULL) |
| 705 #endif | 695 #endif |
| 706 { | 696 { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 735 m_pFontMgr = IFX_FontMgr::Create(FX_GetDefFontEnumerator()); | 725 m_pFontMgr = IFX_FontMgr::Create(FX_GetDefFontEnumerator()); |
| 736 #else | 726 #else |
| 737 m_pFontSource = FX_CreateDefaultFontSourceEnum(); | 727 m_pFontSource = FX_CreateDefaultFontSourceEnum(); |
| 738 m_pFontMgr = IFX_FontMgr::Create(m_pFontSource); | 728 m_pFontMgr = IFX_FontMgr::Create(m_pFontSource); |
| 739 #endif | 729 #endif |
| 740 } | 730 } |
| 741 m_pFont = IFX_Font::LoadFont(wsFontFamily.GetPtr(), dwFontStyles, dwCodePage, | 731 m_pFont = IFX_Font::LoadFont(wsFontFamily.GetPtr(), dwFontStyles, dwCodePage, |
| 742 m_pFontMgr); | 732 m_pFontMgr); |
| 743 return m_pFont != NULL; | 733 return m_pFont != NULL; |
| 744 } | 734 } |
| 735 |
| 736 CFWL_FontManager* CFWL_FontManager::s_FontManager = nullptr; |
| 737 CFWL_FontManager* CFWL_FontManager::GetInstance() { |
| 738 if (!s_FontManager) |
| 739 s_FontManager = new CFWL_FontManager; |
| 740 return s_FontManager; |
| 741 } |
| 742 void CFWL_FontManager::DestroyInstance() { |
| 743 delete s_FontManager; |
| 744 s_FontManager = nullptr; |
| 745 } |
| 745 CFWL_FontManager::CFWL_FontManager() {} | 746 CFWL_FontManager::CFWL_FontManager() {} |
| 746 CFWL_FontManager::~CFWL_FontManager() { | 747 CFWL_FontManager::~CFWL_FontManager() {} |
| 747 for (int32_t i = 0; i < m_arrFonts.GetSize(); i++) { | |
| 748 delete static_cast<CFWL_FontData*>(m_arrFonts[i]); | |
| 749 } | |
| 750 m_arrFonts.RemoveAll(); | |
| 751 } | |
| 752 IFX_Font* CFWL_FontManager::FindFont(const CFX_WideStringC& wsFontFamily, | 748 IFX_Font* CFWL_FontManager::FindFont(const CFX_WideStringC& wsFontFamily, |
| 753 FX_DWORD dwFontStyles, | 749 FX_DWORD dwFontStyles, |
| 754 FX_WORD wCodePage) { | 750 FX_WORD wCodePage) { |
| 755 for (int32_t i = 0; i < m_arrFonts.GetSize(); i++) { | 751 for (const auto& pData : m_FontsArray) { |
| 756 CFWL_FontData* data = static_cast<CFWL_FontData*>(m_arrFonts[i]); | 752 if (pData->Equal(wsFontFamily, dwFontStyles, wCodePage)) |
| 757 if (data->Equal(wsFontFamily, dwFontStyles, wCodePage)) { | 753 return pData->GetFont(); |
| 758 return data->GetFont(); | |
| 759 } | |
| 760 } | 754 } |
| 761 CFWL_FontData* fontData = new CFWL_FontData; | 755 std::unique_ptr<CFWL_FontData> pFontData(new CFWL_FontData); |
| 762 if (!fontData->LoadFont(wsFontFamily, dwFontStyles, wCodePage)) { | 756 if (!pFontData->LoadFont(wsFontFamily, dwFontStyles, wCodePage)) |
| 763 delete fontData; | 757 return nullptr; |
| 764 return NULL; | 758 m_FontsArray.push_back(std::move(pFontData)); |
| 765 } | 759 return m_FontsArray.back()->GetFont(); |
| 766 m_arrFonts.Add(fontData); | |
| 767 return fontData->GetFont(); | |
| 768 } | 760 } |
| 769 FX_BOOL FWLTHEME_Init() { | 761 FX_BOOL FWLTHEME_Init() { |
| 770 return TRUE; | 762 return TRUE; |
| 771 } | 763 } |
| 772 void FWLTHEME_Release() { | 764 void FWLTHEME_Release() { |
| 773 CFWL_ArrowData::DestroyInstance(); | 765 CFWL_ArrowData::DestroyInstance(); |
| 774 FWL_ReleaseFontManager(); | 766 CFWL_FontManager::DestroyInstance(); |
| 775 } | 767 } |
| 776 FX_DWORD FWL_GetThemeLayout(FX_DWORD dwThemeID) { | 768 FX_DWORD FWL_GetThemeLayout(FX_DWORD dwThemeID) { |
| 777 return 0xffff0000 & dwThemeID; | 769 return 0xffff0000 & dwThemeID; |
| 778 } | 770 } |
| 779 FX_DWORD FWL_GetThemeColor(FX_DWORD dwThemeID) { | 771 FX_DWORD FWL_GetThemeColor(FX_DWORD dwThemeID) { |
| 780 return 0x0000ffff & dwThemeID; | 772 return 0x0000ffff & dwThemeID; |
| 781 } | 773 } |
| 782 FX_DWORD FWL_MakeThemeID(FX_DWORD dwLayout, FX_DWORD dwColor) { | 774 FX_DWORD FWL_MakeThemeID(FX_DWORD dwLayout, FX_DWORD dwColor) { |
| 783 return (dwLayout << 16) | (0x0000FFFF & dwColor); | 775 return (dwLayout << 16) | (0x0000FFFF & dwColor); |
| 784 } | 776 } |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 837 m_pColorData->clrEnd[0] = ArgbEncode(255, 175, 204, 251); | 829 m_pColorData->clrEnd[0] = ArgbEncode(255, 175, 204, 251); |
| 838 m_pColorData->clrEnd[1] = ArgbEncode(255, 185, 218, 251); | 830 m_pColorData->clrEnd[1] = ArgbEncode(255, 185, 218, 251); |
| 839 m_pColorData->clrEnd[2] = ArgbEncode(255, 210, 222, 235); | 831 m_pColorData->clrEnd[2] = ArgbEncode(255, 210, 222, 235); |
| 840 m_pColorData->clrEnd[3] = ArgbEncode(255, 243, 241, 236); | 832 m_pColorData->clrEnd[3] = ArgbEncode(255, 243, 241, 236); |
| 841 m_pColorData->clrSign[0] = ArgbEncode(255, 77, 97, 133); | 833 m_pColorData->clrSign[0] = ArgbEncode(255, 77, 97, 133); |
| 842 m_pColorData->clrSign[1] = ArgbEncode(255, 77, 97, 133); | 834 m_pColorData->clrSign[1] = ArgbEncode(255, 77, 97, 133); |
| 843 m_pColorData->clrSign[2] = ArgbEncode(255, 77, 97, 133); | 835 m_pColorData->clrSign[2] = ArgbEncode(255, 77, 97, 133); |
| 844 m_pColorData->clrSign[3] = ArgbEncode(255, 128, 128, 128); | 836 m_pColorData->clrSign[3] = ArgbEncode(255, 128, 128, 128); |
| 845 } | 837 } |
| 846 } | 838 } |
| OLD | NEW |